C++map的嵌套使用增删改查的例程
时间: 2023-11-20 13:13:38 浏览: 198
下面是一个简单的例程,演示了如何在C++中使用嵌套的map进行增删改查操作:
```c++
#include <iostream>
#include <map>
using namespace std;
int main() {
map<string, map<string, int>> student; // 学生名字 -> 科目 -> 分数
// 添加学生信息
student["Alice"]["Math"] = 90;
student["Alice"]["English"] = 85;
student["Bob"]["Math"] = 95;
student["Bob"]["English"] = 92;
// 输出学生信息
cout << "学生信息:" << endl;
for (auto it = student.begin(); it != student.end(); it++) {
cout << it->first << ":" << endl;
for (auto it2 = it->second.begin(); it2 != it->second.end(); it2++) {
cout << " " << it2->first << " " << it2->second << endl;
}
}
// 查找学生信息
cout << "查找学生信息:" << endl;
if (student.find("Alice") != student.end()) {
cout << "Alice的信息:" << endl;
for (auto it = student["Alice"].begin(); it != student["Alice"].end(); it++) {
cout << " " << it->first << " " << it->second << endl;
}
} else {
cout << "查无此人" << endl;
}
// 修改学生信息
cout << "修改学生信息:" << endl;
if (student.find("Bob") != student.end()) {
student["Bob"]["English"] = 90;
cout << "Bob的信息修改成功:" << endl;
for (auto it = student["Bob"].begin(); it != student["Bob"].end(); it++) {
cout << " " << it->first << " " << it->second << endl;
}
} else {
cout << "查无此人" << endl;
}
// 删除学生信息
cout << "删除学生信息:" << endl;
if (student.find("Charlie") != student.end()) {
student.erase("Charlie");
cout << "Charlie的信息删除成功" << endl;
} else {
cout << "查无此人" << endl;
}
return 0;
}
```
输出结果为:
```
学生信息:
Alice:
English 85
Math 90
Bob:
English 92
Math 95
查找学生信息:
Alice的信息:
English 85
Math 90
修改学生信息:
Bob的信息修改成功:
English 90
Math 95
删除学生信息:
查无此人
```
在这个例程中,我们首先定义了一个嵌套的map,表示学生的信息。然后,我们使用了一个嵌套的循环遍历这个map,并输出了所有学生的信息。
接着,我们使用find函数查找学生信息。如果查找到了学生信息,我们就使用一个循环遍历这个学生的科目和分数,并输出结果。否则,就输出“查无此人”。
然后,我们使用一个嵌套的操作符[]修改了Bob的英语成绩,并使用一个循环遍历Bob的科目和分数,并输出结果。
最后,我们使用erase函数删除了一个不存在的学生信息,然后输出“查无此人”。
阅读全文