Map
来源:互联网 发布:ubuntu的root默认密码 编辑:程序博客网 时间:2024/04/30 09:34
map映照容器的元素数据是由一个键值和一个映射数据组成的,她是关联容器,键值与映射数据之间是一对一的关系。map本身是有顺序的,默认她按键值由小到大进行排列。map映射容器的数据机构是采用红黑树来实现的,插入元素的键值不能重复。使用map容器需要头文件包含语句“#include <map>。
1.
map<key, value> myMap;
map<key, value> myMap(myMap2); // 获取myMap2的副本
map<key, value> myMap(begin, end); // begin和end是迭代器
例如:
map<string, int> myMap1;
map<string, int> myMap2(myMap1);
map<string, int> myMap3(myMap1.begin(), myMap1.end());
注:由于map<string, in>类型书写较长,我们可以这样定义, typedef map<string, int> MY_MAP;
2. map添加元素:
map<string, int> myMap;
检查插入元素是否成功:
pair<map<string, int>::iterator, bool> ret = myMap.insert(pair<string, int>("("My map 1", 1));如
果插入成功bool值返回true,否则返回false。
3. map中元素的查找:
使用find()方法来搜索某个键值,如果搜索到了,则返回该键值所在的迭代位置,否则返回end()迭代位置。
代码示例:
map<string, int>::iter = myMap.find("My map 1");
if(iter != myMap.end())
{
cout<<"find the key!"<<endl;
}
4. map中元素的删除:
erase()函数可以删除某个迭代器位置上的元素、等于某个键值的元素。
代码示例:
myMap.erase("My map 1");
5. map的遍历:
map<string, int>::iterator iter;
for(iter = myMap.begin(); iter != myMap.end(); iter++)
{
........
}
6. map自定义比较函数:
1)元素不是结构体
map<int, char, myComp> myMap;
struct myComp
{
bool operator()(const int &a, const int &b)
{
if(a!=b) return a>b;
else return a>b;
}
}
2)元素是结构体
把比较函数写在结构体中。
map<Info, int> myMap;
struct Info
{
float value;
bool operator<(const Info &a) const
{
return a.value < value;
}
}
7. map的基本操作函数:
- map
- MAP
- map
- MAP
- map
- map
- map
- Map
- Map
- Map
- map
- map
- Map
- .map
- map
- MAP
- map
- Map
- dfs棋盘问题,皇后 POJ1321
- UESTC1720(容斥原理)
- Foundation框架
- CCAnimation 和 CCAnimate 区别
- iOS 音频格式WAV和AMR格式转换技术
- Map
- Android应用--简、美音乐播放器获取专辑图片(自定义列表适配器)
- 7月3日
- The Three Kinds of Laziness
- SQL ORDER BY 语句
- MyEclipse设置java文件注释
- Firefox不显示地址栏解决方案
- ajax简单后台交互
- 【stanford C++】容器I(Collection I)