map翻译为映射,是STL中的常用容器。
其实,数组就是一种映射,比如:int a[100];就是定义了一个int到int的映射。而a[5]=25;就是把5映射到25。
数组总是将int类型映射到其它基本类型(称为数组的基类型),这同时也带来了一个问题,有时候我们希望把string映射成一个int,数组就不方便了。
这时就可以使用map,map可以将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器)。
一、map 的用途至少有以下三种情形:
1.需要建立字符(串)与整数之间的映射。
2.可以用大整数做下标,来实现数组计数。
3.字符串与字符串之间的映射。
二、定义map的方法
1.必须先添加map头文件,即#include ,同时必须要有“using namespace std”。
2.定义一个map的方法为:map<typename1,typename2> name;
其中,typename1是映射前的类型(键key),typename2是映射后的类型(值value),name为映射的名字。
例如:普通int数组a就是map<int,int> a。而如果是字符串到整型的映射,就使用string和int建立映射,即map<string,int> a。
三、map的访问
1.用下标访问,通过下标访问就像普通的数组元素访问。
例如:定义了map<char,int> mp, 那么:就可以直接访问mp[‘c’], 如mp[‘c’]=124。
2.通过迭代器访问,通常遍历整个映射时,会用到它。
例如:定义了map<char,int> mp,且做了多次操作后,输出所有的值。
如mp[‘c’]=124,mp[‘t’]=100, mp[‘c’]=200
map<char,int>::iterator it;
因为map的每一对映射都有两个typename,所以,我们使用“it->first”来访问“键”(下标),而使用“it->second”来访问“值”(内容)。
for(it=mp.begin(), it !=mp.end(), it++)
cout<first<<':'<second<<endl;
四、 Map 使用方法总结
map<key_type,value_type>name;//普通的定义
map<string,int>::iterator it; //定义映射类型的迭代器。
it->first 引用键值, it->second 引用映射值。
m.size(); 元素个数;
m.empty(); 判m是否空;
m.clear(); 清空m;
m.begin(); 是指向map中最小元素的迭代器。
m.end(); 是指向map中最大元素下一个位置的迭代器。