这样的学籍管理系统也是一个集合,但是功能更加复杂——需要根据索引找到对应的元素,并对这些元素进行操作。可以通过调用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["litchi"]="mascot"的操作。
还有很多操作,这里不详细介绍了。
比如:
ds[A]
ds.end()
ds.find(x)
ds.empty()
ds.size()
ds.erase(A)
#include<iostream>
#include<cstring>
#include<map>
using namespace std;
int n, opt, num, ans;
string name;
map<string, int>ds;
int main() {int n;cin >> n;while (n--) {cin >> opt;if (opt == 1) {cin >> name >> num;ds[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;
}