题目描述
您要设计一个学籍管理系统,最开始学籍数据是空的,然后该系统能够支持下面的操作(不超过 10^5105 条):
- 插入与修改,格式
1 NAME SCORE
:在系统中插入姓名为 NAME(由字母和数字组成不超过 20 个字符的字符串,区分大小写) ,分数为 \texttt{SCORE}SCORE(0<\texttt{SCORE}<2^{31}0<SCORE<231) 的学生。如果已经有同名的学生则更新这名学生的成绩为 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
这题就是map的应用,附上本蒟蒻的代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
map<string, long long>stu;
while (n--) {
int x;
string s;
long long sc;
cin >> x;
switch (x) {
case 1: {
cin >> s >> sc;
stu[s] = sc;
cout << "OK\n";
break;
}
case 2: {
cin >> s;
if (stu.find(s) != stu.end())
cout << stu[s] << endl;
else
cout << "Not found\n";
break;
}
case 3: {
cin >> s;
if (stu.find(s) != stu.end())
stu.erase(s),cout << "Deleted successfully\n";
else
cout << "Not found\n";
break;
}
case 4: {
cout << stu.size() << endl;
break;
}
}
}
return 0;
}