0、概述
map
翻译为映射,map
可以将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器)。- 下面是
map
、multimap
和unordered_map
之间的差别。
注意这三种映射的底层实现,他决定了算法的时间复杂度。特别注意multimap
其实是数值可重复版本的map
。 - 需要添加头文件和命名空间
#include<vector> using namespace std ;
1、map容器初始化
- key:string -> value:int
map<string,int> mp1;
- key:int -> value:int
map<int,int> mp2;
- key: set<int> -> value:int
map<set<int>,int> mp3;
2、map容器内容的访问
- 通过下标访问
//对一个定义为 map<char,int> mp 的 map,访问key为'c'的value printf("%d\n", mp['c']);
- 通过迭代器访问
//对一个定义为 map<char,int> mp 的 map,打印所有的key和对应的value for (map<char,int>::iterator it = mp.begin(); it != mp.end(); it++){ printf("%c %d\n", it->first/*key*/, it->second/*value*/); }
3、map常用函数
- find() 【常用】
mp.find(x)
功能为查找key
为x
,找到之后返回迭代器,失败则返回mp.end()
。 - 插入数据
- 用
insert
函数插入pair
数据 【常用】
mp.insert(pair<char,int>('x',1));
将key:‘x’,value:1
插入到映射mp
中。 - 用数组的方式直接赋值
mp['x']=1
效果同上
- 用