详解C++ STL multiset 容器
2023-09-11 14:20:16 时间
详解C++ STL multiset 容器
本篇随笔简单介绍一下\(C++STL\)中\(multiset\)容器的使用方法及常见使用技巧。
multiset容器的概念和性质
\(set\)在英文中的意义是:集合。而\(multi-\)前缀则表示:多重的。所以\(multiset\)容器就叫做:有序多重集合。
\(multiset\)的很多性质和使用方式和\(set\)容器差不了多少。而\(multiset\)容器在概念上与\(set\)容器不同的地方就是:\(set\)的元素互不相同,而\(multiset\)的元素可以允许相同。
所以,关于一些\(multiset\)容器和\(set\)容器的相同点,本篇博客就不加以赘述了。需要学习的小伙伴推荐进入本蒟蒻的这篇博客:
与set容器不太一样的地方:
s.erase(k);
\(erase(k)\)函数在\(set\)容器中表示删除集合中元素\(k\)。但在\(multiset\)容器中表示删除所有等于\(k\)的元素。
时间复杂度变成了\(O(tot+logn)\),其中\(tot\)表示要删除的元素的个数。
那么,会存在一种情况,我只想删除这些元素中的一个元素,怎么办呢?
可以妙用一下:
if((it=s.find(a))!=s.end())
s.erase(it);
\(if\)中的条件语句表示定义了一个指向一个\(a\)元素迭代器,如果这个迭代器不等于\(s.end()\),就说明这个元素的确存在,就可以直接删除这个迭代器指向的元素了。
s.count(k);
\(count(k)\)函数返回集合中元素\(k\)的个数。\(set\)容器中并不存在这种操作。这是\(multiset\)独有的。
相关文章
- 《深度探索C++对象模型(Inside The C++ Object Model )》学习笔记
- 安全之路 —— C/C++开3389端口(远程终端)
- qt实现web服务器加载vue应用进行C++和html混合编程-连载【6】-企业级系统开发实战连载系列 -技术栈(vue、element-ui、qt、c++、sqlite)
- [C/C++标准库]_[0基础]_[使用fstream合并文本文件]
- 将MATLAB的变量数据导入到C/C++程序中的方法
- 81 C++ - STL容器使用时机
- C++程序设计:原理与实践(进阶篇)15.10 容器概览
- C++项目库包含,dll引用问题,直接把缺失的dll或库放置可执行文件里
- [C++]:万字超详细讲解多态以及多态的实现原理(面试的必考的c++考点)
- 使用c++filt命令还原C++编译后的函数名
- 《C++ 黑客编程揭秘与防范(第2版)》——6.1 PE文件结构
- C++ STL基本容器的使用
- 【C++】list容器、set容器&map容器
- C++中 使用数组作为map容器VAlue值的解决方法
- C++ STL常用容器以及操作简介 刷题必备技能
- 71、【哈希表】leetcode——350. 两个数组的交集 II(C++版本)
- 浅谈C++ STL string容器
- 详解C++ STL set 容器
- 浅谈C++ STL stack 容器
- 浅谈C++ STL vector 容器
- C++ STL bitset 容器详解
- C++ std::thread join() 与 detach 的理解
- 【C++快速上手】二十三、C++ 容器【待更】