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<<iter->first<<' '<<iter->second<<endl;//输出的是key value值
//反向迭代,根据key排序的,我的key是string,故是字典序排序,从z-a
map<string,int>::reverse_iterator iter;
for(iter = maps.rbegin(); iter != maps.rend(); iter++)
cout<<iter->first<<' '<<iter->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;
先写这么多,下次再补