标签:stl map set multimap multiset
关联容器支持通过键(key)来高效地查找和读取元素。两个基本的关联容器是map和set,map的元素以键-值对形式组织,键用做索引,值表示存储和读取的数据,set包含一个键,并有效地支持关于某个键是否存在的查询。
#include<utility>
pair<int,int>p; p.first=5; p.second=6; pair<int,int>p2; p2=make_pair(5,7); pair<int,int>p3(9,10);
map是键值对的集合,可使用键作为下标来获取一个值。键类型必须支持<操作符,而且能正确的工作。
对map迭代器进行解引用将产生pair类型对象,它的first成员存放键为const,second成员存放值。
使用下标(键)访问时,如果下标存在,则返回下标所关联的值,如果下标不存在,则map容器为该键创建一个新元素,并将它插入到map对象中。
//统计输入的每个单词出现的次数 map<string,int>word_count; string word; while(cin>>word) ++word_count[word];
m.insert(e)
e为一个m上的value_type类型,如果键不存在,则插入值到map中,如果键存在(map中一个给定的键只对应一个元素),则不做任何操作。函数返回一个pair对象,指向键为e.first(即插入元素)的元素的map迭代器,以及一个bool类型对象,表示是否插入了该元素。
word_count.insert(map<string,int>::value_type("Anna",50)); word_count.insert(make_pair("Lily",100));//可以用make_pair简化 typedef map<string,int>::value_type valtype;//用typedef简化 word_count.insert(valtype("Anna",50));
beg和end是标记元素范围的迭代器,其中的元素必须为m.value_type类型,对于该范围的所有元素,如果他的键不在m中,则将该键及其关联的值插入到m中,返回void类型。
m.insert(iter,e)
e是一个用在m上的value_type类型的值,如果键不在m中,则创建新元素,并以迭代器iter为起点搜索新元素存储的位置,返回一个迭代器,指向m中具有给定键的元素。
查找并读取map中元素
map也提供begin和end运算以生成用于遍历整个容器的迭代器。
set只是单纯的键的集合,除了不支持下标操作符,以及没有定义mapped_type类型外,可支持map定义的大部分操作,包括map的构造函数,insert操作,count和find,erase操作。和map一样,set容器存储的键也必须是唯一的,而且不能修改。
multimap和mutiset允许一个键对应多个实例,并且与set和map包含在相同的头文件中。
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:stl map set multimap multiset
原文地址:http://blog.csdn.net/u014245881/article/details/48104841