set 和 multiset 都是 C++ 标准模板库(STL)中的关联容器,它们存储的元素都是唯一的,并且默认按升序排列。然而,set 和 multiset 之间存在一个关键的区别:set 容器不允许存储重复的元素,而 multiset 容器则允许。
set 容器
set 容器通过红黑树(一种自平衡的二叉搜索树)来实现其特性。由于红黑树的性质,set 中的元素始终保持有序,且插入、删除和查找操作的时间复杂度都是对数级别的。
set 的基本使用
set 的特点
唯一性:set 中的元素是唯一的,即不会有重复元素。
有序性:set 中的元素默认按升序排列。
自动排序:当向 set 插入元素时,它会自动调整元素的顺序。
高效操作:set 提供了对数时间复杂度的插入、删除和查找操作。
multiset 容器
multiset 与 set 非常相似,但允许存储重复的元素。它同样使用红黑树来维护元素的排序和唯一性(这里的“唯一性”指的是单个元素位置的唯一性,而不是元素值的唯一性)。
multiset 的基本使用