目录
vector、list、string、deque等容器都称为序列式容器,因为其底层原理都是线性的数据结构,里面存储的是元素本身,那么什么是关联式容器?和序列式容器的区别又在哪里?
关联式容器也是用来存储数据的,与序列式容器不同的是,里面存储的是
用来表示一一对应关系的一种结构,该结构只包含了两个成员变量key和value,key表示键值,value表示与key所对应的信息,比如英汉互译的字典,找到一个英语单词必定存在一个与之对应的翻译,每个单词和翻译之间是一一对应的。
STL总共实现了两种不同结构的关联式容器:树型结构与哈希结构。
树型结构的关联式容器主要有四种:map、set、multimap、multiset。这四种容器的共同点是:使用平衡搜索树(即红黑树)作为其底层结果,容器中的元素是一个有序的序列。下面一依次介绍每一个容器
注意事项:
set的各类操作:
1. insert

插入一个值

插入一个区间
在指定位置插入一个值

我们也可以发现set是默认进行升序排序
2.erase

删除指定位置

删除已存在的数

删除一个区间

3. count和find

找出set中有多少个键值为val的值

虽然我们插入了两个5,但结果只有一个5,因为set会去重,因此count的结果只能是1/0

在set容器中找寻目标值,如果目标值存在则返回其迭代器,如果不存在则返回end()

需要判断find的返回值,如果不等于end(),则说明找到了
4. empty和size


map的各类操作:
1. insert

我们可以发现map的插入的是一个pair类型
那么我们有几种实现pair的方法:

插入还有第二种方法:

通过介绍我们可以发现,如果键值key在map中存在时,则会返回其键值对应的value的引用,
如果key在map中不存在时,则会以该键值插入进map

2.erase

删除指定位置的元素

删除指定值

删除指定值会返回删除的个数,又因为map中每个key值是独立的,因此返回值只能是0/1,但如果是multimap值可以超过1
删除区间

3. find和count

我们可以发现当查找成功会返回该键值所在的迭代器,如果不存在则会返回end()
因此当我们获得迭代器时,我们需要判断一下


查询当前容器有多少个键值是key的数据,但由于在map中key值是独立的,因此count的结果只能是0 / 1
