multiset与set同为C++ STL容器,名称相近,功能相似但各有特点。
1、 multiset 与 set 类似,内部采用红黑树实现,因此具有较高的时间复杂度。
2、 如何定义一个多重集合?
3、 需在头文件中添加include以支持集合操作功能。
4、 与 set 相比,multiset 支持的内置函数基本相同,功能高度相似。
5、 主要包括:获取大小、判空、清空、插入元素、删除元素、查找元素、统计元素个数,以及获取起始和结束迭代器等操作。
6、 包括容量大小、判空、清空、插入、删除、查找、计数、首尾迭代器等操作功能。
7、 插入、删除和查找操作的时间复杂度均为 O(log n)。
8、 计算元素 x 出现次数的时间复杂度为 O(出现次数 + log n)。
9、 其余操作时间复杂度均为常数级。
10、 以2为底的对数,n表示多重集中元素的总数。
11、 掌握C++ STL中set的用法技巧
12、 既然已有集合,为何还需引入多重集这一概念?
13、 当需要保留重复元素时,可使用 multiset,因其特性为允许重复,适用于无法自动去重的场景。
14、 所示,对比 set 与 multiset 的异同点。
15、 由于 multiset 允许重复元素,count(x) 函数因此能够统计特定值的出现次数。
16、 由于 set 具有去重特性,元素 x 要么不存在,要么仅出现一次,因此直接使用 find(x) 更为高效。
17、 但 multiset 的特性有所不同
18、 所示,set 不允许重复元素,multiset 允许重复。
19、 与 set 相同,multiset 在声明时其类型也必须支持小于号的定义。
20、 C++中int、string等内置类型已自动支持小于号比较操作。
21、 当 multiset 中元素为自定义结构体时,需掌握运算符重载方法。
22、 这样编写会导致编译器报错。
23、 C++运算符重载方法详解
24、 multiset 可视为允许重复元素的 set,灵活选用合适容器,有助于简化编程过程。
评论
更多评论