如何使用C++STL中的multiset

 时间:2026-02-14 07:09:13

1、multiset 的内部实现和 set 一样,也是一颗红黑树,因此时间复杂度较高

如何声明一个 multiset?

multiset <value_type> name;

还要在头文件中加上 "#include<set>"

如何使用C++STL中的multiset

2、和 set 相比,multiset 和 set 所支持的内置函数几乎一模一样

主要有:size()/empty()/clear()/insert(x)/erase(x)/find(x)/count(x)/begin()/end()

分别是 大小/判断为空/清空/插入/删除/寻找/查找个数/首迭代器/尾迭代器

其中,insert,erase,find 的时间复杂度都是 O(logn)

count 的时间复杂度是 O(元素 x 个数+logn)

其它的时间复杂度为 O(1)

log 以 2 为底,n 是 multiset 中所有元素个数

3、那么,为什么还要有“multiset”这个东西呢?

因为这个 multiset 不会自动去重,当你遇到不能去重的时候,就可以用multiset

如图,set 与 multiset 的对比

如何使用C++STL中的multiset

4、还有,因为 multiset 不会自动去重,这让 count(x) 函数派上了用场

set 会去重,所以元素 x 只会出现 0 次或 1 次,还不如用 find(x) 函数

但 multiset 不一样

如图,set 与 multiset 的对比

如何使用C++STL中的multiset

5、还有,和 set 一样,mutiset 声明时的类型必须定义小于号

int,string 等C++内置变量类型已经自动定义好了小于号

但如果 multiset 中元素类型为自定义的结构体时,你需要学会重载运算符

如果我们这么写,编译器就会报错

如何使用C++STL中的multiset

6、总而言之,multiset 就是 set 的不去重版本,可以根据需要选择合适的容器,降低编程难度


  • 芝麻杂粮煎饼
  • 2013中国人民大学图书馆学考研初试经验分享
  • 怎样把希腊字母打出来
  • 格拉纳达旅游攻略
  • 办理建筑施工延长作业时间证明办事指南
  • 热门搜索
    示波器的作用 fresh是什么意思 牙膏的作用 got是什么意思 什么是美瞳 马齿笕功效与作用 汽车轮胎什么牌子好 什么叫股权激励 广告设计用什么软件 无产阶级是什么意思