基本用法
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)。