STL——容器(Set 和 multiset)

1. Set 和 multiset 的概念

set 和 multiset 是一个集合容器,其中 set 所包含的元素是唯一的,集合中的元素按一定的顺序排列。set 采用红黑树变体的数据结构实现,红黑树属于平衡二叉树。在插入操作和删除操作上比 vector 快。在n个数中查找目标数的效率是 log2 n

红黑树定义  — 是每个节点都带有颜色属性(颜色为红色或黑色)的自平衡二叉查找树

满足下列性质:

1)节点是红色或黑色;

2)根节点是黑色;

3)所有叶子节点都是黑色节点(NULL);

4)每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节点。)

5)从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。

扫描二维码关注公众号,回复: 11213471 查看本文章

2. Set multiset 特点

set中元素插入过程是按排序规则插入,所以不能指定插入位置。

set不可以直接存取元素。(不可以使用at.(pos)与[]操作符)。

multiset与set的区别:set支持唯一键值,每个元素值只能出现一次;而multiset中同一值可以出现多次

不可以直接修改set或multiset容器中的元素值,因为该类容器是自动排序的。如果希望修改一个元素值,必须先删除原有的元素,再插入新的元素

头文件 #include <set>  

======================================================================================================================

猜你喜欢

转载自www.cnblogs.com/CooCoChoco/p/12906369.html