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算法
略
十、总结与选型建议
略
热门推荐
家用射频仪怎么用?使用注意事项有哪些?
电动自行车“以旧换新”遇阻?临沂市商务局回应:部分旧国标车可重新认定
多肉植物的养护与修剪(打造美丽多肉花园,让你的家更有生气)
猕猴桃减肥计划:摄入低热量 高纤维的理想选择
“我们将在海滩作战!”:黑白历史照片纪念敦刻尔克大撤退80周年
丘吉尔的著名演讲:“我们将在海滩抗战”
郑钦文首登 UTR 女子世界排名第一!中国网球之星闪耀国际赛场
新高考会考成绩对高考有影响吗?会考成绩计入高考吗?985要求会考全A吗?
冰箱买回来为什么要静置24小时(5种大家电装好后不要立刻用)
冰箱到货后,一定别踩这5个坑,否则,用不了多久就得坏!
别只盯着热门工科!这四个小众专业,就业前景超乎想象
阅读的概念:从纸质阅读的衰退看生活方式的转变
护士错误操作:拔氧气管犯法吗?
8年前的手提电脑可以重新刷系统吗?老笔记本装系统教程【图示】
铁蛋白升高一定是癌症吗?
演讲技巧:提升竞聘成功率的关键
为什么网上注册账号,一定要绑定手机号?
称雄东亚海域的海盗头子郑芝龙为何富可敌国
铠的伤害最高出装是什么?如何选择最佳装备提升输出?
雅儿贝德:恶魔般的优雅与力量,她如何成为Overlord中最受欢迎的角色?
零失败姜撞奶(附姜糖膏制作方法)
电动车刷圈,真的越快越好吗?
电动车刷圈,真的越快越好吗?
拔罐减肥依据:拔罐减肥依据什么原理
北洹春事休嗟晚,三月尚寒花信风。
可以用白醋洗脸吗
白醋洗脸祛斑祛痘:真相与误解
精准解读验光单,轻松应对开学视力检查
影响制动距离的因素有哪些?
传播道家思想,发掘传统智慧,引领当代社会