关于 STL map容器
· map 容器存储的都是 pair 对象,也就是用 pair 类模板创建的键值对。
· 创建 map 容器:
map<string,int>all;
· 使用 map 容器存储的各个键值对,键的值既不能重复也不能被修改。
· 在使用 map 容器存储多个键值对时,该容器会自动根据各键值对的键的大小,按照既定的规则进行排序。默认情况下会自动选择 less<T> 做升序排序,当然也可以手动指定排序规则,比如选用 greater<T> ,或者自定义排序规则。比如:
map<string,int,greater<string>>all{{"hello",111},{"bye",222}};
此时,all 容器内部键值对排列的顺序为:
<"hello",111> <"bye",222>
· 当使用 struct 作为 map 中的 key 时,需要手动对 struct 进行实现,重载 < 运算符的代码。因为 map 容器本身通过的 < 对 key 做升序排序,但是 key 为结构体时,< 无法对结构体进行排序。比如:
struct point { int x,y,r; bool operator<(const point &p)const { if(x==p.x) { if(y==p.y) return r<p.r; return y<p.y; } return x<p.x; } };