STL关联式容器之set和multiset】的更多相关文章

一,set和multiset的基础知识 1.set和multiset的基础 set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按照一定的顺序排列,元素插入过程是按照排序规则插入的.所以不能指定插入元素的位置. set的底层数据结构是红黑二叉树,红黑树属于平衡二叉树.在插入操作和删除操作比vector快. set不可以直接存取元素,即不能使用像序列式容器中(vector,deque)那样随机存取. multiset和set的区别在于set支持元素唯一,而multiset允许插入多个重复的…
关联式容器的特征:所用元素都会根据元素的键值自动被排序. set STL 中的关联式容器低层数据结构为红黑树,其功能都是调用低层数据结构中提供的相应接口. set元的元素不会像map那样同时拥有键(key)和值(value). set元素的键就是值,值就是键,并不允许两个元素有相同的键. multiset允许相同键值存在. 因为set元素的键和值相等,所以不允许对set元素的值进行修改.(数据结构会根据key对元素进行排序,对value的更改会改变树中元素的排列顺序). set容器提供的迭代器为…
一,map和multimap的概念 1.map和multimap的基本知识 map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供基于key的快速检索能力. map中key值是唯一的,集合中的元素按照一定的顺序排列,元素插入过程是按照排序规则插入的,不能指定插入位置. map的底层数据结构是红黑树变体的平衡二叉树.在插入和删除操作中比vector要快. map可以直接存取key所对应得value,支持[]操作符,如map[key] = value; multim…
一,list容器基本概念 1.list容器基本知识 list容器的底部数据结构为双向链表,可以高效的进行插入和删除元素. list因为底层数据结构是双向链表,因此不支持下标操作和.at()函数的操作.要获取元素,必须从头到尾遍历. 使用list容器必须引入头文件# include<list>. 二,list容器构造函数 1.无参构造函数 // 无参构造函数 list<string> l1; 2.有参构造函数 // 有参构造函数,10个字符'A'来初始化容器 list<, 'A…
一.关联式容器 标准的STL关联式容器分为set(集合)/map(映射表)两大类,以及这两大类的衍生体multiset(多键集合)和 multimap(多键映射表).这些容器的底层机制均以RB-tree(红黑树)完成.RB-tree也是一个独立容器,但并不开放给外界使用. 此外,SGI STL 还提供了一个不在标准规格之列的关联式容器:hash table (散列表),以及以此hash table 为底层机制而完成的hash_set(散列集合).hash_map(散列映射表).hash_mult…
 什么是容器 容器,顾名思义,是用来容放东西的场所.C++容器容放某种数据结构,以利于对数据的搜寻或排序或其他特殊目的.众所周知,常用的数据结构不外乎:数组array,  链表list,  树tree,  栈stack,  队列queue,  散列表hash table,  集合set.映射表map 等等.容器便是容纳这些数据结构的.这些数据结构分为序列式与关联式两种,故容器也分为序列式容器和关联式容器.   (图来自<STL源码剖析>) vector容器 1.  vector是STL提供的一…
STL的iterator组件,分离了容器和算法. 一.规定 在STL体系下定义iterator,要满足规定的一些规范: 1.iterator_category 有5中分类,决定胃具体的操作,如:++,--,!=,==等,归纳为: Input_iterator:只读,不写 output_iterator:只写,不读 forward_iterator: 具备向前读写 bidirectional_iterator: 具备向前,向后读写 random_access_iterator: 提供算数能力  ,…
关联式容器(associative containers) 根据数据在容器中的排列特性,容器可分为序列式(sequence)和关联式(associative)两种. 标准的STL关联式容器分为set(集合)和map(映射表)两大类,以及两大类的衍生体multiset(多键集合)和multimap(多键映射表).这些容器的底层机制均是以RB-tree(红黑树)完成.RB-tree也是一个独立的容器,但并不开放给外界使用. 此外,SGI STL还提供一个不在规格标准之列的关联式容器:hash tab…
目录 一丶关联容器map/multimap 容器 二丶代码例子 1.map的三种插入数据的方法 3.map集合的遍历 4.验证map集合数据是否插入成功 5.map数据的查找 6.Map集合删除元素以及清空元素 7.map中常用的函数 一丶关联容器map/multimap 容器 map容器跟以上的容器都不同,它是一个 表存储结构. 也就是存储表的一个结构. 存储的是 key-value的方式. 所以我们使用的需要执行key的方式,以及key对应的value 它底层的实现结构也是key value…
UPDATE(20190416):写完vector和set之后,发现不少内容全部引导到map上了……于是进行了一定的描述补充与更正. 零.STL目录 1.容器之map 2.容器之vector 3.容器之set 一.前言 鉴于最近不少次都要用到map我却总是出各种bug,于是决定写一篇总结来巩固一下. 这篇文章虽名为STL容器之map,但其实包含了整个STL及其容器的概念与用途,以及诸如vector, set等基本容器的许多常规操作,可以作为一篇STL容器的总领性文章. 二.什么是STL 全称St…