编程学习biancheng.45soft.com 本站提供了各种在线教程和资料,供大家学习与参考.
编程学习
当前位置: 主页 > C++ > 关联容器 >

C++ 关联容器


本章将继续介绍标准库容器类型的另一项内容——关联容器。关联容器和顺序容器的本质差别在于:关联容器通过键(key)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存储和访问元素。


虽然关联容器的大部分行为与顺序容器相同,但其独特之处在于支持键的使用。本章涵盖了关联容器的相关内容,并完善和扩展了一个使用顺序容器和关联容器的例子。


关联容器(Associative containers)支持通过键来高效地查找和读取元素。两个基本的关联容器类型是 map set。map 的元素以键-值(key-value)对的形式组织:键用作元素在 map 中的索引,而值则表示所存储和读取的数据。set 仅包含一个键,并有效地支持关于某个键是否存在的查询。


一般来说,如果希望有效地存储不同值的集合,那么使用 set 容器比较合适,而 map 容器则更适用于需要存储(乃至修改)每个键所关联的值的情况。在做某种文本处理时,可使用 set 保存要忽略的单词。而字典则是 map 的一种很好的应用:单词本身是键,而它的解释说明则是值。


set 和 map 类型的对象所包含的元素都具有不同的键,不允许为同一个键添加第二个元素。如果一个键必须对应多个实例,则需使用 multimap 或 multi set,这两种类型允许多个元素拥有相同的键。


关联容器支持很多顺序容器也提供的相同操作,此外,还提供管理或使用键的特殊操作。下面的小节将详细讨论关联容器类型及其操作,最后以一个用容器实现的小型文本查询程序结束本章。

表 10.1. 关联容器类型

map 关联数组:元素通过键来存储和读取
set 大小可变的集合,支持通过键实现的快速读取
multimap 支持同一个键多次出现的 map 类型
multiset 支持同一个键多次出现的 set 类型

C++
C++ 关联容器