map介绍
map提供一对一的数据处理,key-value键值对,其类型可以自己定义,其中第一个成为关键字,第二个称为关键字的值。
关键字不能修改,值可以修改。
map内部有序(自动排序),查找复杂度为log(n)。
map插入、删除都很方便。
map用法
-
必须引用的包
#include <map>
-
声明
``` map<string,int> maps; ```
-
基本方法快速查找
函数名
功能
maps.insert()或当数组用
插入
maps.find()
查找一个元素
maps.clear()
清空
maps.erase()
删除一个元素
maps.size()
长度
maps.begin()
返回指向map头部的迭代器
maps.end()
返回指向map末尾的迭代器
maps.rbegin()
返回一个指向map尾部的逆向迭代器
maps.rend()
返回一个指向map头部的逆向迭代器
maps.empty()
如果map为空则返回true
swap()
交换两个map
-
map的插入(map内部是自动排序号的,单词则按字母序排序)
//两种各有自己的方便之处
maps.insert(pair<string,int>( “one”,1));
maps[ “one”] =1;
//其中"one"是key,1是value值,并且map内部是自动排序号的,单词则按字母序排序 -
map的遍历
//迭代,根据key排序的,我的key是string,故是字典序排序,从a-z
map< string,int>::iterator iter;
for(iter = maps.begin(); iter != maps.end(); iter++)
cout<first<<’ '<second<<endl;//输出的是key value值//反向迭代,根据key排序的,我的key是string,故是字典序排序,从z-a
map<string,int>::reverse_iterator iter;
for(iter = maps.rbegin(); iter != maps.rend(); iter++)
cout<first<<’ '<second<<endl;//数组形式的遍历
int nSize = maps.size();
//此处应注意,应该是 for(int nindex = 1; nindex <= nSize; nindex++)
//而不是 for(int nindex = 0; nindex < nSize; nindex++)
for(int nindex = 1; nindex <= nSize; nindex++)
cout<<maps[nindex]<<endl;
先写这么多,下次再补