您要设计一个学籍管理系统,最开始学籍数据是空的,然后该系统能够支持下面的操作(不超过 1 0 5 10^5 105 条):
1 NAME SCORE:在系统中插入姓名为 NAME(由字母和数字组成不超过 20 个字符的字符串,区分大小写) ,分数为
SCORE
\texttt{SCORE}
SCORE(
0
<
SCORE
<
2
31
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
在插入学生信息时,直接使用 map 的 [] 操作符将姓名和成绩插入即可。
在查询学生成绩时,使用 map 的 count 函数判断学生是否存在,如果存在则输出成绩,否则输出 Not found。
在删除学生信息时,同样使用 map 的 count 函数判断学生是否存在,如果存在则使用 map 的 erase 函数删除,否则输出 Not found。
在查询学生数量时,直接使用 map 的 size 函数获取 map 中元素数量即可。
#include
#include
#define AUTHOR "HEX9CF"
using namespace std;
int main()
{
int n;
map<string, int> m;
cin >> n;
while (n--)
{
int op;
string name;
int score;
cin >> op;
switch (op)
{
case 1:
cin >> name >> score;
m[name] = score;
cout << "OK" << endl;
break;
case 2:
cin >> name;
if (m.count(name))
{
cout << m[name] << endl;
}
else
{
cout << "Not found" << endl;
}
break;
case 3:
cin >> name;
if (m.count(name))
{
m.erase(name);
cout << "Deleted successfully" << endl;
}
else
{
cout << "Not found" << endl;
}
break;
case 4:
cout << m.size() << endl;
break;
}
}
return 0;
}