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算法
略
十、总结与选型建议
略
热门推荐
AI生成技术让奶龙跳起土耳其舞,这个国产动画IP如何火遍全网?
小鸡大乱斗修改器使用攻略:从萌新到战场王者的必修课
肺大泡患者八大注意事项,东南大学附属中大医院专家详解
如何抑制肺大泡
带状疱疹愈后管理:这些细节你做对了吗?
京东互联网医院教你如何缓解带状疱疹后遗神经痛
《小鸡大乱斗》:谁是你的最佳队友?
A股百亿龙头惊现内斗!总经理社交媒体连续发文,直指董事长
A股突发!百亿身家董事长,“出事”了!
《小鸡大乱斗》最新版本搞笑瞬间大揭秘!
基金定投的策略有哪些?这些策略如何选择和运用?
从零到一:中国股市30年发展纪实
上交所成立30周年:中国股市的文化脉络
跟着抖音玩转长沙夜生活!
长沙地铁里的千年文化:从里耶古城到天心阁
研究人性最透彻的书
《小鸡大乱斗》解谜挑战:给你的大脑来点“鸡”情
《小鸡大乱斗》新手必看:快速上手指南!
《小鸡大乱斗》新版本上线:5V5团队决斗引爆玩家热情!
带状疱疹中医治疗的历史探秘
桐庐垂云通天河:地下河探险与高空刺激的完美结合
浙江热度榜第一:桐庐垂云通天河必打卡景点
小鸡大乱斗:如何优化网络设置提升游戏体验?
小鸡模拟器卡顿?这些硬件升级让你秒变高手!
小鸡模拟器卡顿?这些技巧让你秒变高手!
50岁以上必打!VZV疫苗防带状疱疹后遗神经痛
神经射频调控手术:终结带状疱疹后遗神经痛的新希望!
比伯刮胡子变帅,你敢尝试吗?
剃须后用芦荟胶,皮肤更舒爽!
《小鸡大乱斗》CS模式:萌鸡大战新玩法