map的常见用途
- 需要建立字符(或字符串)与整数之间映射的题目,使用map减少代码量
- 判断大整数或者其他类型数据是否存在的题目,可以把map当bool数组用
- 字符串和字符串的映射
备注:
- map翻译为映射,可以将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器)
- map键和值是唯一的,如果一个键要对应多个值,只能用multimap。
- map会以键从小到大的顺序自动排序。map内部是使用红黑树实现(set也是)
- 如果是字符串到整形的映射,必须使用string类型,不能使用char数组
常见函数:
#include<stdio.h>
#include<map>
using namespace std;
int main(){
map<char ,int >mp; //map<set<int>,string >mp;
mp['c']=20;
mp['d']=30;
mp['a']=50;
//find(key)返回键为key的映射的迭代器
map<char ,int >::iterator it1=mp.find('d');
printf("%c %d\n",it1->first,it1->second);
//erase()删除单个元素,删除一个区间内的元素[begin,end)
//mp.erase(it1);
//mp.erase(it1,mp.end());
//size()map中映射的对数
printf("%d\n",mp.size());
//清空
// mp.clear();
//通过下标访问
//printf("%d\n",mp['c']);
//通过迭代器访问
for(map<char ,int >::iterator it=mp.begin();it!=mp.end();it++){
printf("%c %d\n",it->first,it->second);
}
return 0;
}