P5266 【深基17.例6】学籍管理题解

news2024/12/23 5:24:29

题目

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

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

输入输出样例

输入样例

5
1 lxl 10
2 lxl
3 lxl
2 lxl
4

 输出样例

OK
10
Deleted successfully
Not found
0

解析

这样的学籍管理系统也是一个集合,但是功能比较复杂--需要根据索引找到对应的元素,并对元素进行操作。可以通过调用STL库里面的map来解决这个问题。

map关联集合的本质也是一棵红黑树,可以看作一个下标可以是任意类型的数组。其头文件是map,可以调用map实现如下几个基本功能。

(1)map<A,B> ds:建立一个名字叫做ds,下标类型为A,元素类型为B的映射表,例如map<string,int>就是一个将string映射到int的映射表。

(2)ds[A]=B:把这个”数组”中下标为A的位置的值变成B,这里下标可以是任意类型,不一定限定为大于0的整数,比如map<string,string>ds,就可以进行ds["kkksc03"]="mascot"的操作。

(3)ds[A]:访问这个“数组”中下标为A的元素,比如可以进行cout<<ds["kkksc03"]<<endl;这样的操作。

(4)ds.end():返回映射表中最后一个元素的下一个元素的地址。

(5)ds.find(x):查询x在映射表中的地址,如果这个数不存在,则返回ds.end()。

(6)ds.empty():如果集合是空的,则返回1,否则返回0。

(7)ds.size():返回映射表中的元素个数

(8)ds.erase(A):删除这个”数组”中下标为A的元素。

注意:在使用ds[A]访问“数组”下标为A的元素时,如果这个下标对应的元素不存在,则会自动创建下标为A,值为默认值的元素。

#include<iostream>
#include<map>
#include<cstring>
using namespace std;
int n,opt,num;
string name;
map<string,int> ds;
int main(){
	cin>>n;
	while(n--){
		cin>>opt;
		if(opt==1){
			cin>>name>>num;
			ds[name]=num;//这里对映射表name所对应的值修改为num 
			cout<<"OK"<<endl;
		}
		else if(opt==2){
			cin>>name;
			if(ds.find(name)!=ds.end()){
				cout<<ds[name]<<endl;
			}
			else{
				cout<<"Not found"<<endl;
			}
		}
		else if(opt==3){
			cin>>name;
			if(ds.find(name)!=ds.end()){
				ds.erase(ds.find(name));
				cout<<"Deleted successfully"<<endl;
			}
			else{
				cout<<"Not found"<<endl;
			}
		}
		else{
			cout<<ds.size()<<endl;
		}
	}
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用群晖NAS结合cpolar内网穿透实现公网访问本地Office文件

文章目录 本教程解决的问题是&#xff1a;1. 本地环境配置2. 制作本地分享链接3. 制作公网访问链接4. 公网ip地址访问您的分享相册5. 制作固定公网访问链接 本教程解决的问题是&#xff1a; 1.Word&#xff0c;PPT&#xff0c;Excel等重要文件存在本地环境&#xff0c;如何在编…

智能硬件 | AI手机是营销噱头吗?对哪些行业利好?

趁着AI浪潮&#xff0c;手机厂商争先抢滩AI手机领域&#xff0c;智能手机开始步入AI新时代。AI手机不需要借助第三方App&#xff0c;而是通过手机自身的算力&#xff0c;直接成为用户的智能助手。但手机的AI应用能有多少&#xff0c;是否只是手机厂商为促进销量的营销噱头&…

【框架设计】MVC和MVVM对比图

1. MVC&#xff08;Model-View-Controller&#xff09; 单向通信View和Model通过Controller承上启下 2. MVVM&#xff08;Model-View-ViewModel&#xff09; 数据绑定M -> VM -> V DOM事件监听 V -> VM -> M 1. MVC是单向的&#xff0c;MVVM是双向的&#xff0c;…

CUDA入门之统一内存

原文来自CUDA 编程入门之统一内存 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;高性能&#xff08;HPC&#xff09;开发基础教程 &#x1f380;CSDN主页 发狂的小花 &#x1f304;人生秘诀&#xff1a;学习的本质…

Java——正则表达式详解

目录 Java正则表达式1、正则表达式语法1.1、基本的元字符1.2、数量元字符1.3、位置元字符1.4、特殊字符元字符1.5、回溯引用和前后查找1.6、大小写转换1.7、匹配模式 2、Java中的正则表达式2.1、概述2.2、获取匹配位置2.3、捕获组 3、匹配单个字符3.1、匹配纯文本3.2、匹配任意…

小程序对于人力资源行业的创新与变革

随着移动互联网的快速发展&#xff0c;小程序成为了各行各业推广和服务的新利器。对于人力资源行业来说&#xff0c;开发一款定制化的小程序不仅可以提升服务效率&#xff0c;还可以增强品牌形象和用户粘性。那么&#xff0c;如何定制开发人力资源类的小程序呢&#xff1f;下面…

嵌入式3-11

1、整理思维导图 2、尝试学生结构体数组&#xff0c;完成成员的输入&#xff0c;以成绩为条件完成对学生成员的冒泡排序并输出&#xff08;全部在主函数内完成&#xff09; #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.…

【算法】Hash存储——开放寻址法

模拟散列表 维护一个集合&#xff0c;支持如下几种操作&#xff1a; I x&#xff0c;插入一个整数 x&#xff1b; Q x&#xff0c;询问整数 x是否在集合中出现过&#xff1b; 现在要进行 N次操作&#xff0c;对于每个询问操作输出对应的结果。 输入格式 第一行包含整数 N&am…

Retrofit

1.导入依赖 //Retrofit 核心库implementation("com.squareup.retrofit2:retrofit:2.9.0")//响应数据自动序列化//JSONimplementation("com.squareup.retrofit2:converter-gson:2.9.0")//String类型implementation("com.squareup.retrofit2:converter…

Python办公自动化之PDF(二)

Python操作PDF二 1、PyMuPDF简介2、 1、PyMuPDF简介 PyMuPDF&#xff08;也称Fitz&#xff09;开源&#xff0c;提供了一整套用于处理PDF文件的综合工具。使用PyMuPDF&#xff0c;用户可以高效地执行打开PDF、提取文本、图像和表格、操作旋转和裁剪等页面属性、创建新PDF文档以…

详解7道经典指针运算笔试题!

目录 ​编辑 1. 题目一 &#xff08;1&#xff09;代码 &#xff08;2&#xff09;分析 2. 题目二 &#xff08;1&#xff09;代码 &#xff08;2&#xff09;分析 3. 题目三 &#xff08;1&#xff09;代码 &#xff08;2&#xff09;分析 4. 题目四 &#xff08;…

JimuReport积木报表 v1.7.2 版本发布,低代码报表工具

项目介绍 一款免费的数据可视化报表&#xff0c;含报表和大屏设计&#xff0c;像搭建积木一样在线设计报表&#xff01;功能涵盖&#xff0c;数据报表、打印设计、图表报表、大屏设计等&#xff01; Web 版报表设计器&#xff0c;类似于excel操作风格&#xff0c;通过拖拽完成报…

C++中类模板的定义和使用

类模板的定义和使用 引言类模板声明和定义有问有答 示例运行结果注意参数传递ref 引言 类模板就是一个模板&#xff0c;但是数据可以适用多种类型。类模板使用时需要模板的特例化&#xff0c;就变成了模板类。 本文只要是记录一下模板的使用。同时对于引用和右值引用传参做一下…

C语言基础练习——Day05

目录 选择题 编程题 数字在升序数组中出现的次数 整数转换 选择题 1、如下程序的功能是 #include <stdio.h> int main() {char ch[80] "123abcdEFG*&";int j;puts(ch);for(j 0; ch[j] ! \0; j){if(ch[j] > A && ch[j] < Z)ch[j] ch[j] e…

【考研数学】张宇学习包

张宇的授课侧重于启发学生的综合思维能力。对于基础较好的学生而言&#xff0c;在听完他的课后&#xff0c;解题通常不会构成太大问题&#xff0c;而且可以学到许多解题技巧&#xff0c;其中包括张宇老师创造的易记的“点火公式”。 然而&#xff0c;对于基础较薄弱的学生来说…

STM32CubeIDE基础学习-STM32CubeIDE软件偏好设置

STM32CubeIDE基础学习-STM32CubeIDE软件偏好设置 文章目录 STM32CubeIDE基础学习-STM32CubeIDE软件偏好设置前言第1章 设置字体颜色第2章 设置字体大小第3章 设置代码区背景颜色总结 前言 编程软件环境最好就设置一个自己喜欢的界面进行显示&#xff0c;这样看起来会比较舒服些…

【fastllm】学习框架,本地运行,速度还可以,可以成功运行chatglm2模型

1&#xff0c;关于 fastllm 项目 https://www.bilibili.com/video/BV1fx421k7Mz/?vd_source4b290247452adda4e56d84b659b0c8a2 【fastllm】学习框架&#xff0c;本地运行&#xff0c;速度还可以&#xff0c;可以成功运行chatglm2模型 https://github.com/ztxz16/fastllm &am…

【你也能从零基础学会网站开发】Web建站之javascript入门篇 Array数组

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;web开发者、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 数组概述 …

Vue+SpringBoot打造农家乐订餐系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户2.2 管理员 三、系统展示四、核心代码4.1 查询菜品类型4.2 查询菜品4.3 加购菜品4.4 新增菜品收藏4.5 新增菜品留言 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的农家乐订餐系统&#xff0c…

RabbitMQ 安装登陆 提示:User can only log in via localhost

RabbitMQ默认提供了一个guest/guest用户&#xff0c;但是从3.3.0 版本以后该账号只能localhost登陆&#xff08;User can only log in via localhost&#xff09; 解决办法&#xff1a;通过命令行创建一个管理员账号 通过以下命令创建一个用户user&#xff0c;密码为user12345…