map
概念
如果说set对应数学中的“集合”,那么map对应的就是“映射”。map是一种key-value型容器,其中key是关键字,起到索引作用,而value就是其对应的值。与set不同的是它支持下标访问。头文件是
特点
- 增加和删除节点对迭代器的影响很小(高效的插入与删除)
- 快速的查找(同set)
- 自动建立key-value的对应,key和value可以是任何你需要的类型
- 可以根据key修改value的记录
- 支持下标[]操作
声明
map<T1,T2> m
其中T1是key类型,T2是value类型,m就是一个T1-T2的key-value。map<string,int> m;//声明一个key为string,value为int的map型容器
例子:
#include<iostream>
#include<map>
using namespace std;
int main()
{
map<string,int> m;
m["abc"] = 5;
m["cdf"] = 6;
m["b"] = 1;
for(auto it = m.begin();it != m.end();it++)
cout << it->first <<" " << it->second << endl;
return 0;
}
插入元素
使用insert()函数插入pair类型的元素
使用下标操作向map容器中插入元素
map<string,int> m;
m.insert(make_pair("b",6));//insert插入
m["a"] = 5;//使用下标插入
删除元素
erase(key):删除键为key的元素
erase(it):删除迭代器it所指向的元素
#include<iostream>
#include<map>
using namespace std;
int main()
{
map<string,int> m;
m.insert(make_pair("b",6));
m["a"] = 5;
m["c"] = 5;
m["d"] = 5;
m["e"] = 5;
m.erase("d");
auto pr = m.begin();
m.erase(pr);
for(auto it = m.begin();it != m.end();it++)
cout << it->first <<" " << it->second << endl;
return 0;
}
map容器的遍历
使用迭代器遍历(代码如上)
注:使用迭代器遍历map容器,其中每一个元素可以看成是pair类型的,访问第一个位置的key值可以用it->first访问,第二个位置value的值可以用it->second访问,其中it是指向该元素的迭代器。