(一)Map映射
map(映射)可以理解为下标可以不为Int类型的高级数组
#include <map>
map<string, int> a;是字符串到数字的映射
应用:给英文字符串,求星期几
#include <iostream>
#include <string>
#include <map>
using namespace std;
map<string, int> Day;
int main() {
Day["Sunday"] = 7;
Day["Monday"] = 1;
Day["Tuesday"] = 2;
Day["Wednesday"] = 3;
Day["Thursday"] = 4;
Day["Friday"] = 5;
Day["Saturday"] = 6;
string Name;
cin >> Name;
cout << Day[Name] << endl;
return 0;
}
(二)Set集合
Set(集合)与数学上的集合意义相同(相同元素记一次)
#include <set>
set<int> s;
- s.insert(x) 插入元素x
- s.erase(x) 删除元素x
- s.empty() 判断集合是否为空
- s.size() 集合元素个数
- s.max_size() 最大容量
- s.begin() 指向第一个元素的迭代器
- s.end() 指向最后一个元素+1位置的迭代器
- s.find(x) 返回指向x的迭代器
- s.count(x) 返回x出现的次数(因为是集合 只可能是0或1)
若自定义结构体用set时,需要重载小于运算符,因为set会按升序排序
#include <iostream>
#include <set>
using namespace std;
set<int> s;
int n, tmp;
int main() {
cin >> n;
for(int i=1; i<=n; i++) {
cin >> tmp;
s.insert(tmp);
}
set<int>::iterator It; //It是一个迭代器(类似于指针)
for(It = s.begin(); It != s.end(); It ++) cout << *It << " ";
return 0;
}
Input:
5
5 5 3 3 1
Output:
1 3 5