如何使用C++STL中的multiset

2025-04-22 04:28:12

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 的不去重版本,可以根据需要选择合适的容器,降低编程难度

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢