C++容器(二):关联容器简介
2015-10-01 21:06
204 查看
关联容器(associative container)与顺序容器的本质区别在于:关联容器通过键(
关联容器支持通过键来高效地查找和读取元素。两个基本的关联容器类型是
一般来说,如果希望有效的存储不同值的集合,那么
关联容器共享大部分—但并非全部—的顺序容器操作。关联容器不提供
总结来说,顺序容器与关联容器公共的操作包括以下几种:
三种构造函数:
关联容器不能通过容器的大小来定义。
关系运算(例如
类型别名(typedef)。 注意,对于
关于容器大小的操作。但
参考文献:
C++ Primer中文版(第四版)》,Stanley B.Lippman et al. 著, 人民邮电出版社,2013。
Key)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存储和访问元素。虽然,关联容器的大部分行为与顺序容器相同,但其独特之处在于支持键的使用。
关联容器支持通过键来高效地查找和读取元素。两个基本的关联容器类型是
map和
set。
map的元素以键-值(key-value)对的形式组织:键用作元素在
map中的索引,而值则表示所存储和读取的元素。
set仅含一个键,并有效地支持关于某个键是否存在的查询。
类型 | 含义 |
---|---|
map | 关联数组:元素通过键来存取和读取 |
set | 大小可变的集合,支持通过键实现的快速读取 |
multimap | 支持同一个键多次出现的map类型 |
multiset | 支持同一个键多次出现的set类型 |
set容器比较合适,而
map容器则更适用于需要存储(乃至修改)每个键所关联值的情况。在做某种文本处理时,可使用
set保存要忽略的单词。而字典则是
map的一种很好的应用:单词本身是键,而它的解释说明则是值。
map和
set类型的对象所包含的元素都具有不同的键,不允许同一个键添加第二个元素。如果一个键必须对应多个实例,则需要使用
multimap和
multiset类型。
关联容器共享大部分—但并非全部—的顺序容器操作。关联容器不提供
front,
push_front,
back,
push_back和
pop_back操作。
总结来说,顺序容器与关联容器公共的操作包括以下几种:
三种构造函数:
C<T> c; // creates an empty container // c2 must be same type as c1 C<T> c1(c2); // copies elements from c2 to c1 // b and e are iterators denoting a sequence C<T> c(b, e); // copies elements from the sequence into c
关联容器不能通过容器的大小来定义。
关系运算(例如
==,
<,
>等)。
begin,
end,
rbegin和
rend操作。
类型别名(typedef)。 注意,对于
map容器,
value_type并非元素的类型,而是描述键及其关联值类型的
pair类型。对于这一点将在
map类型的介绍中讲解。
swap和赋值操作。但是关联容器不提供
assign函数。
clear和
erase操作。但是关联容器的
erase运算返回
void类型。
关于容器大小的操作。但
resize函数不能用于关联容器。
参考文献:
C++ Primer中文版(第四版)》,Stanley B.Lippman et al. 著, 人民邮电出版社,2013。
相关文章推荐
- C++容器(二):关联容器简介
- leetcode 242 :Valid Anagram
- 位操作基础篇之位操作全面总结
- #LeetCode# #C++# Symmetric Tree
- EffectiveC++
- 从C++strStr到字符串匹配算法
- c和c++易错点拾露
- C语言之进制、位运算符、数组
- 读取数量不定的输入数据
- c++primer读书笔记零(开读篇)
- C语言及程序设计.第二十三课.项目6.前导0的数字
- c++ 读写Excel及数据导入SQLServer
- C语言及程序设计.第二十三课.项目5.我的加班费
- 单链表顺序存储相关操作的c语言实现
- C++ 多重继承和虚继承的内存布局
- C++ | 数组与指针
- 2013级别C++文章9周(春天的)工程——运算符重载(两)
- 08.C语言数组
- 07.C语言内存分析
- 06.C语言函数