您的位置:首页 > 编程语言 > C语言/C++

《c++ primer》第 10 章 关联容器

2013-05-23 09:12 267 查看

概论

关联容器与顺序容器的本质差别:关联容器通过键(key)存储和读取元素,而顺序容器通过元素在容器中的位置顺序访问和存储元素

引言 pair类型

在utility中定义
生成pair对象make_pair map<stirng,int>word;word.insert(make_pair("abc",1))
在返回一对值的时候,可以考虑使用,例如返回最小最大值

关联容器

区别于顺序容器,关联容器不提供front,push_front,push_back操作
不能定义关联容器的大小

MAP类型

头文件map
键类型必须定义<,并且必须能正确工作,因为当用迭代器遍历字典的时候,会将其按照键的大小输出,而不是按照插入顺序
map<K,V>::key_type是索引的键的类型,map<K,V>::mapped_type是键类型,map<K,V>::value_type是pair类型,第一个成员是键类型const,不能修改
给map添加元素,两种方法:1.insert 2使用下标赋值
用下标访问不存在的元素会导致在map容器中添加一个新元素,所关联的值:类类型使用默认构造函数,而内置类型初始化为0
//记录每个单词出现的次数
map<string,int>word_count;
string word;
while(cin >> word)
++word_count[word];


map::insert的返回类型很有趣,输入参数一般为pair类型
带有pair类型的insert的返回值是pair类型的,pair<迭代器类型,布尔值>
查找并读取map中的元素,count和find函数
从map中删除元素,区别于顺序迭代器,它的返回值是void

SET类型

SET容器中只是单纯的键的集合。它不支持下标操作,没有定义mapped_value类型。在set容器中,value_type不是pair类型,而是与key_type相同的类型
获得set元素的迭代器后,只能对其进行读操作,而不能写操作,const

multimap和multiset类型

允许一个键对应多个实例,但是multimap不支持下标运算。
如果某个键对应多个实例,那么它将相邻排放。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: