map/multimap的简介
map是标准的关联式容器,一个map里存储的元素是一个键值对序列,叫做(key,value)键值对。它提供基于key快速检索数据的能力。(就好像拿着快递号码, 去拿快递)
例子:
#include <iostream>
#include <functional>
#include <algorithm>
#include <map>
#include <string>
using namespace std;
int main()
{
map<int, string> mapStu;
mapStu.insert(pair<int, string>(1, "张三"));
mapStu.insert(pair<int, string>(2, "李四"));
mapStu.insert(pair<int, string>(3, "王五"));
mapStu[4] = "赵六";
for(map<int, string>::iterator it = mapStu.begin(); it != mapStu.end(); it++)
{
cout<<"key: "<<(*it).first<<" value: "<<(*it).second<<endl;
}
system("pause");
return 0;
}
运行环境: vc++ 2010学习版
运行结果:
1)map中key值是唯一的。集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。
2)map底层的具体实现是采用红黑树变体的平衡二叉树的数据结构。在插入操作、删除和检索操作上比vector快很多。
3)map可以直接存取key所对应的value,支持[]操作符,如map[key]=value。
multimap与map的区别:
map支持唯一键值,每个键只能出现一次;而multimap中相同键可以出现多次。multimap不支持[]操作符。
例子:
#include <iostream>
#include <functional>
#include <algorithm>
#include <map>
#include <string>
using namespace std;
int main()
{
multimap<int, string> mapStu;
mapStu.insert(pair<int, string>(1, "张三"));
mapStu.insert(pair<int, string>(2, "李四"));
mapStu.insert(pair<int, string>(3, "王五"));
//multimap 不支持[]操作, map支持
//mapStu[4] = "赵六";
//multimap 支持相同的key 插入
mapStu.insert(pair<int, string>(3, "小王五"));
for(multimap<int, string>::iterator it = mapStu.begin(); it != mapStu.end(); it++)
{
cout<<"key: "<<(*it).first<<" value: "<<(*it).second<<endl;
}
system("pause");
return 0;
}
运行环境: vc++ 2010学习版
运行结果: