《洛谷深入浅出基础篇》P5266 学籍管理——map的应用

上链接:P5266 【深基17.例6】学籍管理 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)icon-default.png?t=N7T8https://www.luogu.com.cn/problem/P5266#submit

题干: 

题目描述

您要设计一个学籍管理系统,最开始学籍数据是空的,然后该系统能够支持下面的操作(不超过 105105 条):

  • 插入与修改,格式1 NAME SCORE:在系统中插入姓名为 NAME(由字母和数字组成不超过 20 个字符的字符串,区分大小写) ,分数为 SCORESCORE(0<SCORE<2310<SCORE<231) 的学生。如果已经有同名的学生则更新这名学生的成绩为 SCORE。如果成功插入或者修改则输出OK
  • 查询,格式2 NAME:在系统中查询姓名为 NAME 的学生的成绩。如果没能找到这名学生则输出Not found,否则输出该生成绩。
  • 删除,格式3 NAME:在系统中删除姓名为 NAME 的学生信息。如果没能找到这名学生则输出Not found,否则输出Deleted successfully
  • 汇总,格式4:输出系统中学生数量。

输入格式

输出格式

输入输出样例

输入 #1复制

5
1 lxl 10
2 lxl
3 lxl
2 lxl
4

输出 #1复制

OK
10
Deleted successfully
Not found
0

 这道题是map的基础运用

让我们来介绍一下map的一些基本函数

首先定义一个map

代表mmp的下标数据类型是string,值数据类型是int 

第一个就是插入

我们可以用一个最简单的插入方式数组下标式

如果map内已经存在该下标,那么新的值会覆盖原来的值。如果不存在,就创建一个新下标。

第二个是查询map.find()

map.find(),查找的是map的下标,如果map里存在该下标,那么返回该迭代器,否则返回map.end()

第三个是删除,map.erase()

参数是具体下标,或者迭代器,或者一个区域

但是无论是迭代器,区域都是指向下标的,也就是键值

 erase的返回参数是0或1,代表是否删除成功。

当map里面存在该元素,删除成功,反正不成功

第四个是求map的元素个数:map.size()

返回map里元素的个数

好的,接下来就是上代码了:

int score, t,opt;
string name;
int main()
{map<string, int> mmp;cin >> t;while (t--){cin >> opt;if (opt == 1){cin >> name >> score;mmp[name] = score;cout << "OK" << endl;}else if (opt == 2){cin >> name;if (mmp.find(name) != mmp.end())cout << mmp[name] << endl;else cout << "Not found" << endl;}else if (opt == 3){cin >> name;if (mmp.find(name) != mmp.end()){cout <<"Deleted successfully" << endl;mmp.erase(name);}else cout << "Not found" << endl;}elsecout << mmp.size() << endl;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/194769.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

存储过程与触发器

一、存储过程 1.1 概念 把需要重复执行的内容放在存储过程中&#xff0c;实现代码的复用。 create procedure 创建存储过程的关键字 my_proc1:存储过程的名字。 执行下例代码就是创建了一个存储过程 执行存储过程&#xff0c;就是把上图的插入语句重复执行&#xff0c;现…

go学习之简单项目

项目 文章目录 项目1.项目开发流程图2.家庭收支记账软件项目2&#xff09;项目代码实现3&#xff09;具体功能实现 3.客户信息管理系统1&#xff09;项目需求说明2&#xff09;界面设计3&#xff09;项目框架图4&#xff09;流程5&#xff09;完成显示客户列表的功能6&#xff…

光敏传感器模块(YH-LDR)

目录 1. YH-LDR模块说明 1.1 简介 1.2 YH-LDR 模块的引脚说明 1.3 LDR 传感器工作原理与输出特性 2. 使用单片机系统控制 YH-LDR 模块 2.1 通用控制说明 1. YH-LDR模块说明 1.1 简介 YH-LDR 是野火设计的光强传感器&#xff0c;使用一个光敏电阻作为采集源&#x…

Kafka-4.1-工作原理综述

1 Kafka工作原理详解 1.1 工作流程 Kafka集群将 Record 流存储在称为 Topic 的类中&#xff0c;每个记录由⼀个键、⼀个值和⼀个时间戳组成。 Kafka 中消息是以 Topic 进⾏分类的&#xff0c;⽣产者⽣产消息&#xff0c;消费者消费消息&#xff0c;⾯向的都是同⼀个Topic。Topi…

【JavaEE初阶】计算机是如何工作的

一、计算机发展史 计算的需求在⼈类的历史中是广泛存在的&#xff0c;发展大体经历了从⼀般计算⼯具到机械计算机到目前的电子计算机的发展历程。 人类对计算的需求&#xff0c;驱动我们不断的发明、改善计算机。目前这个时代是“电子计算机”的时代&#xff0c;发展的潮流是…

快速支持客户知识库的核心优势是什么?

快速支持客户知识库是一个集中存储和组织企业知识的平台&#xff0c;包含了丰富的信息和解决方案&#xff0c;以帮助客户快速解决问题&#xff0c;帮助企业提高客户支持效率和满意度。那么&#xff0c;快速支持客户知识库的核心优势是什么呢&#xff1f; | 1、提高客户自助支持…

基于Springboot的地方美食分享网站(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的地方美食分享网站(有报告)。Javaee项目&#xff0c;springboot项目。 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 项目介绍&#xff1a; 采用…

贝锐蒲公英助力智慧楼宇,实现自控系统远程运维、数据实时监测

在智慧楼宇系统中&#xff0c;存在着多套不同的系统&#xff0c;比如&#xff1a;智能照明控制、智能空调控制、智能安防监控等。在实际应用中&#xff0c;除了需要打通楼内各个系统实现智能联动&#xff0c;如何实现各地多楼宇的数据实时互通构建智慧楼宇生态系统也是需要解决…

JAVA小游戏 “拼图”

第一步是创建项目 项目名自拟 第二部创建个包名 来规范class 然后是创建类 创建一个代码类 和一个运行类 代码如下&#xff1a; package heima;import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import jav…

Spring IOC - Bean的生命周期之依赖注入

在Spring启动流程中&#xff0c;创建的factoryBean是DefaultListableBeanFactory&#xff0c;其类图如下所示&#xff1a; 可以看到其直接父类是AbstractAutoireCapableBeanFactory&#xff0c;他主要负责完成Bean的自动装配和创建工作。 具体来说&#xff0c;AbstractAutowire…

设计模式-行为型模式-策略模式

一、什么是策略模式 策略模式是一种行为设计模式&#xff0c;它允许在运行时选择算法或行为&#xff0c;并将其封装成独立的对象&#xff0c;使得这些算法或行为可以相互替换&#xff0c;而不影响使用它们的客户端。&#xff08;ChatGPT生成&#xff09; 主要组成部分&#xff…

argocd

部署argocd https://github.com/argoproj/argo-cd/releases kubectl create namespace argocd kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v2.9.1/manifests/install.yaml官网 https://argo-cd.readthedocs.io/en/stable/ kubectl crea…