(6)std::multiset
std::multiset 是 C++ 标准模板库(STL)中的一个关联容器,它是 std::set 的变体,其核心特性是允许元素重复。同一个值可以出现多次,但所有元素仍然保持有序。
允许重复元素:
- 与 std::set 的唯一性不同,std::multiset 允许插入相同的值多次。
- 这是它与 std::set 最根本的区别。
有序性:
- 所有元素根据其值自动按升序排列(默认使用 std::less<T>)。
- 相同值的元素在容器中的相对顺序与插入顺序一致(稳定排序)。
基于平衡二叉搜索树:
- 底层通常使用红黑树实现,与 std::set 相同。
- 这保证了操作的稳定性能。
对数时间复杂度:
- 插入、删除、查找单个元素的平均和最坏时间复杂度为 O(log n)。
- 删除所有特定值的元素或查找范围的时间复杂度为 O(log n + k),其中 k 是匹配元素的数量。
键值一体:
- 和 std::set 一样,元素的值本身就是其排序和查找的“键”。
浙公网安备 33010602011771号