map为映射,map可以 将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器)。
使用map,需要添加头文件
#include<map>
,还要加上
using namespace std;
map的定义
单独定义一个map:
map<typename,typename> mp;
map需要确定映射前类型(键key)和映射后类型(值value)。
如果是字符串到整型的映射,必须使用string而不能用char数组:(数组不能作为键值)
map<string,int> mp;
map的键和值也可以是STL容器,例如将一个set容器映射到一个字符串:
map<set<int>,string> mp;
map容器内元素的访问
通过下标访问
由于键值是唯一的,因此可以使用mp[key]的形式访问。
map<char,int> mp;
mp['c'] = 20;
通过迭代器访问
map的迭代器定义:
map<typename1,typename2>::iterator it;
可以通过一个it来同时访问键和值。map可以使用it->first来访问键,使用it->second来访问值。
map会以键从小到大的顺序自动排序。
map常用函数
- find()
find(key)返回键为key的映射的迭代器。 - erase()
erase()有两种用法,①删除单个元素;②删除一个区间内的所有元素。见vector。
新增了通过mp.erase(key)
键值来删除单个元素。 - size()
用来获得map中映射的对数。 - clear()
用来清空map中的所有元素
map的常见用途
- 需要建立字符(或字符串)与整数之间映射的题目。
- 判断大整数或其他类型数据是否存在的题目,可以把map当做bool数组使用。
- 字符串和字符串的映射。
map的键和值是唯一的。