C++,STL容器 set/multiset:集合/多重集合深入解析
创作时间:
作者:
@小白创作中心
C++,STL容器 set/multiset:集合/多重集合深入解析
引用
CSDN
1.
https://blog.csdn.net/Allen_Spring/article/details/145531339
C++ STL中的set和multiset容器是基于红黑树实现的关联容器,具有自动排序特性。set保证元素唯一性,而multiset允许重复元素。本文将从容器概览、核心特性对比、基础操作详解等多个维度对这两个容器进行深入解析。
一、容器概览
(1)set/multiset是STL提供的关联容器,基于红黑树实现,具有自动排序特性
(2)set保证元素唯一性,multiset允许重复元素
(3)时间复杂度:插入/删除/查找 O(log n)
(4)头文件:#include
二、核心特性对比
特性 | set | multiset |
|---|---|---|
元素唯一性 | √ | × |
insert返回值 | pair<iter, bool> | iterator |
count耗时 | O(log n) | O(log n + k) |
equal_range应用 | 较少 | 关键方法 |
三、基础操作详解
// 初始化示例
set<int> s = {
5, 2, 8, 2, 7}; // 实际存储 {2,5,7,8}
multiset<int> ms = {
5, 2, 8, 2, 7}; // 存储 {2,2,5,7,8}
// 自定义排序规则
struct CaseInsensitiveCompare {
bool operator()(const string& a, const string& b) const {
return lexicographical_compare(a.begin(), a.end(),
b.begin(), b.end(),
[](char c1, char c2){
return tolower(c1) < tolower(c2);
});
}
};
set<string, CaseInsensitiveCompare> caseInsensitiveSet{
"Apple", "banana", "APPLE"};
四、关键成员函数解析
略
五、底层实现探秘
略
六、性能优化实践
略
七、典型应用场景
略
八、注意事项与陷阱
略
九、进阶技巧:结合STL算法
略
十、总结与选型建议
略
热门推荐
张汝京:中芯国际的领航者
三面牙刷好还是一面牙刷好?牙刷怎么选合适?
Grow模型的四个步骤
刘云志:老照片真是趣味十足的存在
基于原型学习网络的手写字识别系统
春季兵与秋季兵的区别
杂交水稻的创新与突破:提高产量与品质的新方法
央视《舌尖上的中国》开年聚焦邯郸,太行风光与美食文化惊艳亮相!
鱼油护心被反转!BMJ新研究:长期吃鱼油这种心脏病风险不降反升
牛奶酸奶减肥(纯牛奶会发胖吗)
“芯片狂人”张汝京,抗打压破威胁,在中国建造10座芯片加工厂!
住房公积金如何计算?不同地区的差异全解析
银行账户的资金监管是如何实施的?
过敏性紫癜和血小板减少性紫癜有何差异?如何区分?
诉讼指南之诉讼代理人
不便亲自打官司?这些诉讼代理知识请收好
生活中怎么判断输电线路多少伏?
日本旅游淡旺季,节日庆典与公共假期介绍,合理安排出游时间
傲霜枝——菊花中的坚韧与傲然(以菊残犹有傲霜枝)
破壁机选购指南:关键参数与豆浆机的区别
一场关于操控与舒适的较量,麦弗逊悬架VS双叉臂,到底哪个更好?
科创板股票的涨跌幅限制与新股上市首日表现
Windows 11系统关闭程序的三种实用方法
如何正确检查电瓶状态?电瓶检查的关键步骤有哪些?
如何判断拉布拉多是否为纯种?(从7个部位看拉布拉多的纯种程度)
以“智”助学 北京发布首份教育领域人工智能应用指南
心脏支架手术新农合可以二次报销吗?
五分钟了解《唐朝行政区划》都督、州、县、都护府、道等
7月兰州市商品住宅销售价格下降,为何兰州房价持续下降?
巨鹿之战:揭秘项羽如何击败40万大军