4.0 关联容器

关联容器都是排好序的,有以下四种:

1)set:   排好序的集合,不允许有相同的元素

2)multiset:  排好序的集合,允许有相同元素

3)map   :map中的每个元素都有关键字和值两部分,容器中的元素是按关键字排序的。不允许有多个元素关键字相同

4)multimap: 与map类似,可以允许多个元素关键字相同

注*:不能修改set和multiset容器中的值,因为修改后容器并不会重新调整排序。正确的做法是删除元素,再重新插入。同理也不能修改map和multimap中关键字的值

**:在关联容器上查找和插入元素的时间复杂度都是O(log(n)).

时间: 2024-10-10 06:29:57

4.0 关联容器的相关文章

STL 笔记(二) 关联容器 map、set、multimap 和 multimap

STL 关联容器简单介绍 关联容器即 key-value 键值对容器,依靠 key 来存储和读取元素. 在 STL 中,有四种关联容器,各自是: map 键值对 key-value 存储,key 不可反复,即一个 key 仅仅能相应一个 value, 相应头文件<map> multimap 键值对 key-value 存储,key 能够反复,即一个 key 能够相应多个 value, 相应头文件<map> set 仅仅有 key, key 不可反复,相应头文件<set>

实例讲解,set,multiset,map,multimap关联容器

测试环境:windows 7 vs2010 内部元素有序排列,新元素插入的位置取决于它的值,查找速度快. 除了各容器都有的函数外,还支持以下成员函数: find: 查找等于某个值的元素(x小于y和y小于x同时不成立即为相等) lower_bound: 查找某个下界 upper_bound: 查找某个上界 equal_range: 同时查找上界和下界 count:计算等于某个值的元素个数(x小于y和y小于x同时不成立即为相等) insert: 用以插入一个元素或一个区间 在学习关联容器之前,我们先

【足迹C++primer】38、关联容器操作(2)

关联容器操作(2) map的下标操作 map的下标操作 map和unordered_map容器提供了下标运算符合一个对应的at函数 对于一个map使用下标操作,其行为与数组或vector上的下标操作很不相同: 使用一个不再容器中的关键字作为下标,会添加一个此关键字的元素到map中 map和unordered_map的下标操作 c[k] 返回关键字为k的元素,如果关键字k不再c中,添加一个关键字为k的元素,对其进行值初始化 c.at(k) 访问关键字为k的元素,带参数检测,如果k不再c重那么返回一

关联容器(底层机制) — hashtable

C++ 11已将哈希表纳入了标准之列.hashtable是hash_set.hash_map.hash_multiset.hash_multimap的底层机制,即这四种容器中都包含一个hashtable. 解决碰撞问题的办法有许多,线性探测.二次探测.开链等等.SGI STL的hashtable采用的开链方法,每个hash table中的元素用vector承载,每个元素称为桶(bucket),一个桶指向一个存储了实际元素的链表(list),链表节点(node)结构如下: template <cl

[C++]高效使用关联容器的一些建议

关联容器 本文介绍在关联容器中常见的一些的问题以及提升使用关联容器的建议. 1. 理解相等(equality)和等价(equivalence)的区别. 相等是以operator==为基础的.等价是以operator<为基础的. 例如find的定义是相等,他用operator==来判断,这是比较容易理解的. 而等价关系是以"在已排序的区间中对象值的相对顺序"为基础的.也就是说,如果两个值中任何一个(按照既定的排列顺序)都在另一个的前面,那么他们就是等价的. !(w1 < w2

C++之容器(关联容器)

C++之容器(关联容器) 关联容器和顺序容器的本质区别:关联容器是通过键存取和读取元素.顺序容器通过元素在容器中的位置顺序存储和访问元素.因此,关联容器不提供front.push_front.pop_front.back.push_back以及pop_back,此外对于关联容器不能通过容器大小来定义,因为这样的话将无法知道键所对应的值什么. 两个基本的关联容器类型是map和set.map的元素以键-值对的形式组织:键用作元素在map的索引,而值则表示所存储和读取的数据.set仅包含一个键,并有效

C++拾遗(七)——关联容器

关联容器(Associative containers)支持通过键来高效地查找和读取元素.两个基本的关联容器类型是 map 和set.map 的元素以键-值(key-value)对的形式组织:键用作元素在 map 中的索引,而值则表示所存储和读取的数据.set仅包含一个键,并有效地支持关于某个键是否存在的查询.set 和 map 类型的对象所包含的元素都具有不同的键,不允许为同一个键添加第二个元素.如果一个键必须对应多个实例,则需使用 multimap 或 multiset,这两种类型允许多个元

C++primer第十章 关联容器

关联容器和顺序容器的本质差别在于:关联容器通过键(key)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存储和访问元素. 一般来说,如果希望有效地存储不同值的集合,那么使用 set 容器比较合适,而 map 容器则更适用于需要存储(乃至修改)每个键所关联的值的情况.在做某种文本处理时,可使用 set 保存要忽略的单词.而字典则是 map 的一种很好的应用:单词本身是键,而它的解释说明则是值. set 和 map 类型的对象所包含的元素都具有不同的键,不允许为同一个键添加第二个元素.如果一

STL 笔记(二): 关联容器 map、set、multimap 和 multimap

STL 关联容器简介 关联容器即 key-value 键值对容器,依靠 key 来存储和读取元素.在 STL 中,有四种关联容器,分别是: map 键值对 key-value 存储,key 不可重复,即一个 key 只能对应一个 value, 对应头文件<map> multimap 键值对 key-value 存储,key 可以重复,即一个 key 可以对应多个 value, 对应头文件<map> set 只有 key, key 不可重复,对应头文件<set> mult