基本用法
multiset
是 C++ 标准模板库(STL)中的一个关联容器,它允许存储多个相同值的元素,并且自动按顺序进行排序。multiset
的主要特点是可以高效地进行插入、删除和查找操作。
要使用 multiset
,首先需要包含头文件:
1 |
然后,可以定义一个 multiset
:
1 | std::multiset<int> myMultiset; |
特点和注意事项
-
自动排序:
multiset
中的元素总是按升序排列(默认情况下),也可以通过自定义比较函数进行排序。 -
允许重复:与
set
不同,multiset
允许存储多个相同的值。 -
底层实现:
multiset
通常使用红黑树(Red-Black Tree)来实现,这使得插入、删除和查找操作的时间复杂度为 O(log n)。 -
查找操作:
count(key)
:返回指定键的数量。find(key)
:返回一个指向键的迭代器。equal_range(key)
:返回一个范围,表示键的所有等价元素。
-
插入和删除操作:
insert(value)
:插入值。erase(key)
:删除所有等于键的元素。erase(iterator)
:删除指定迭代器处的元素。
示例代码
以下是一个使用 multiset
的简单示例,展示了基本的插入、查找和删除操作:
1 |
|
运行结果:
1 | Multiset elements: 10 10 20 30 |
总结
multiset
是一个非常有用的容器,特别是在需要存储重复元素并且对元素进行排序的场景中。它提供了高效的插入、删除和查找操作,但需要注意的是,它允许重复的元素存在,并且这些操作的时间复杂度通常为 O(log n)。