C++标准模板库(STL)中的Multiset
Multiset是一种类似于set的关联容器类型,唯一的区别是允许有多个元素具有相同的值。 一些与multiset相关的基本函数:
- begin() – 返回multiset中第一个元素的迭代器 -> O(1)
- end() – 返回multiset中最后一个元素的迭代器之后的理论元素 -> O(1)
- size() – 返回multiset中的元素个数 -> O(1)
- max_size() – 返回multiset可以容纳的最大元素数 -> O(1)
- empty() – 返回multiset是否为空 -> O(1)
- insert(x) – 在multiset中插入元素x -> O(log n)
- clear() – 从multiset中删除所有元素 -> O(n)
- erase(x) – 移除所有等于x的元素 -> O(log n)
实现:
输出
从多重集中移除具有相同值的元素:
- a.erase() – 移除多重集中所有具有相同值的元素
- a.erase(a.find()) – 仅移除多重集中一个具有相同值的元素
在多重集上执行各种操作的时间复杂度为 –
- 元素插入 – O(logN)
- 元素访问 – O(logN)
- 元素删除 – O(logN)
输出
时间复杂度: O(max(Σ(log(i)),(K+log(n))),其中i是插入时多重集的大小,K是传递的值的总计数,n是多重集的大小。
辅助空间: O(1)。