头文件声明
#include<map>
using namespace std;
1.定义
map<char,int> mp;
map<set<int>,int> mp2;//键和值都可为STL容器
2.访问
#通过下标访问
mp['a']=20;
printf("%d\n",mp['a']);
#通过迭代器访问
mp['b']=10;
mp['c']=30;
for(map<char,int>::iterator it=mp.begin();it!=mp.end();it++)
printf("%c %d\n",it->first,it->second);
输出
a 20
b 10
c 30
可以看出map会以键从小到大的顺序自动排列,他与set一样内部是红黑树的结构
3.其他用法
#find() 返回迭代器 时间复杂度O(logN)
map<char,int>::iterator it=mp.find('b');
printf("%c %d\n",it->first,it->second);
#erase()
map<char,int>::iterator it=mp.find('b');
mp.erase(it);//时间复杂度O(1)
mp.erase('a');//时间复杂度O(logN)
#size() 获得映射对数 时间复杂度O(1)
#clear() 清空元素 时间复杂度O(N)
延伸:
multimap:一个键对应多个值
unordered_map:散列代替红黑树(只映射不排序,速度快)