1.关联式容器
---------------------------------------------------------------------------------------------------------------------------
1.关联式容器
序列式容器: vector 、 list 、deque
关联式容器:map/set
关联式容器就是数据和数据之间具有很强的关联性,底层用的就是红黑树,红黑树的底层说到底也是搜索树
-----------------------------------------------------------------------------------------------------------------------------
我们先学set --- set的本质就是key模型 ,用于确认在不在
value_type是什么呢??
这里set遍历出来的特征是有序的,因为set底层的搜索二叉树,搜索二叉树走中序是有序的
set这里可以间接完成 排序+去重
可是我要是想倒着遍历呢??
1.使用反向迭代器
2.我们可以去控制这颗树
-----------------------------------------------------------------------------------------------------------------------------
erase
这么看两种删除都可以,那么有什么区别呢??
第一种删除不存在的时候,不会有任何问题,第二个删除不存在的时候就会删除出问题
---------------------------------------------------------------------------------------------------------------------------------
count
但是count不是为了这里设计的,count的设计是为了保持接口的一致性
-------------------------------------------------------------------------------------------------------------------------------
lower_bound和upper_bound
equal_range
------------------------------------------------------------------------------------------------------------------------
我们现在在来看看map
map插入的时候,插入的不在是一个数据,而是一个结构体,这个结构体的pair
我们来看看map 中 insert是如何传参的
我们也可以使用make_pair 去替换pair<T1 , T2>
map的遍历
我们在这里也很喜欢用范围for
----------------------------------------------------------------------------------------------------------------------------
我们用map 来玩一个统计次数的东西
这是第一种玩法
我们的第二种玩法 -----> 使用operator[]
我们先从功能上看看这个函数
operator[]的功能非常强大
nap 当中的at
key存在返回value的引用,也可以修改
要是不存在会抛出一个异常
----------------------------------------------------------------------------------------------------------------------------
我们来看看operator[]底层是怎么实现的