《C++primer》关联容器
来源:互联网 发布:玻璃杯加工工艺知乎 编辑:程序博客网 时间:2024/05/02 01:42
关联容器(associative container)支持通过键来高效地查找和读取元素。主要有map和set类型。map的元素以键-值对的形式组织,而set仅包含一个键
map关联数组,元素通过键来存储和读取set大小可变的集合,支持通过键实现的快速读取multimap支持同一个键多次出现的map类型multiset支持同一个键多次出现的set类型标准库类型pair在头文件utility中定义。pair是一种模板类型,包含两个数据值。在创建pair对象时,必须提供两个类型名,pair对象所包含的两个数据成员各自对应的类型名字,这两个类型不必相同。
pair类型的数据成员可以直接访问,其成员分别命名为first和second
关联容器共享大部分(并非全部)的顺序容器操作。关联容器不提供front,push_front,pop_front,back,push_back以及pop_back操作。
键的比较函数“<",必须严格弱排序。所谓严格弱排序就是键类型数据上的“小于”关系,不能出现相互“小于”。如果相互不“小于”则是相等。
map对象的元素是键-值对,map的value_type就反映了这个事实。
map<K,V>::value_type,一个pair类型,它的first元素具有const map<K,V>::key_type类型,而second元素则为map<K,V>::mapped_type类型。
map迭代器进行解引用将产生pair类型的对象。
使用下标访问map与使用下标访问数组或vector的行为截然不同:用下标访问不存在的元素将导致在map容器中添加一个新的元素,它的键即为该下标值。
map容器的insert成员与顺序容器的类似,但需要考虑键的影响。
map对象中一个给定键只对应一个元素。如果试图插入的元素所对应的键已在容器中,则insert不做任何操作。
map容器提供了两个操作:count和find,用来检查某个键是否存在而不会插入该键
m.count(k) 返回m中k的出现次数
m.find(k) 如果m容器中存在按k索引的元素,则返回指向该元素的迭代器。如果不存在,则返回超出末端迭代器。
erase操作可以从map对象中删除元素
关联容器的键都是唯一的,而且不能修改。
set容器是键的集合。当只想知道一个值是否存在时,使用set容器是最合适的。
set容器不提供下标操作符。
关联容器是按顺序存储的。
在multimap和multiset中查找元素的方法:
1.使用find和count操作
2.与众不同的面向迭代器的解决方案
m.lower_bound(k)返回一个迭代器,指向键不小于k的第一个元素m.upper_bound(k)返回一个迭代器,指向键大于k的第一个元素m.equal_range(k)返回一个迭代器的pair对象,它的first成员等价于m.lower_bound(k)而second成员等价于m.upper_bound(k)3.equal_range函数返回存储一堆迭代器的pair对象
- C++primer 关联容器
- 《C++primer》关联容器
- c++Primer笔记(十 关联容器)
- C ++ primer 中说的关联容器
- C++primer U10 读书笔记 关联容器
- 【足迹C++primer】36、使用关联容器
- 【足迹C++primer】37、关联容器概述
- c++primer(十)关联容器
- C++primer学习:关联容器(1)
- C++primer学习:关联容器(2)
- C++primer学习:关联容器(3)
- C++primer学习:关联容器练习(4)
- c++Primer,九,十,顺序容器,关联容器
- C++ primer 关联容器
- [C++ Primer] 关联容器
- 【C++ Primer】关联容器
- C++Primer学习笔记第十章(10/18)关联容器
- C++Primer第10章关联容器习题
- C++ sdk 获取执行文件所在路径
- VC线程池,拿来就用
- 刷屏程序
- undefined symbol _main
- 《汇编语言》
- 《C++primer》关联容器
- 程序员装b指南
- C# winform DataGridView 属性说明
- IE下的画板——xml介绍及应用示例
- vc++内存泄漏定位
- POJ-1947 简单的树型DP,但要考虑完全
- C++ sdk 创建桌面快捷方式
- Box2D 内存管理 - 小型对象分配器(SOA)的实现
- 在WinCE下,应用程序直接读/写/擦除flash设备的方法