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算法
略
十、总结与选型建议
略
热门推荐
盛京:历史的印记与现代的融合
白色枳壳、粉色月见、紫藤花瀑.....福州4月赏花指南来了!
毛细血管是什么颜色
仲裁流程试用期:法律适用与实务操作指南
考前模拟的话,通过率会高很多吗?
公认最难的逻辑推理题
难解的数学题:从费马最后定理到NP完全问题
三种常用继电器的功能与应用
如何理解股票市场中的做空机制?这种机制对市场有何作用?
纽约vs伦敦哪座城市世界第一?五个指标证明纽约最有经济实力
全球城市GDP经济40强名单盘点,中国十城在列,占四分之一
真正让孩子性早熟的食物,不是鸡肉不是豆浆,而是……
湖南机场:智能机器人分流,减缓长沙机场安检区客流压力
什么是自放电率?详解电池自放电率的影响与应对策略
编程无人机课程教什么的
甲亢相关知识和健康宣教
6个国家【硕士留学费用】一览 最全费用清单
水煮木耳减肥能吃吗
来自牙医的神秘验血令丨贤医健康说
发蜡对头发有伤害吗?每天使用真的好吗?
解析静态IP的应用场景与优势
在网络设置中,选择静态IP地址还是使用DHCP分配更合适?
电商人如何在高压工作中保持心理健康
丙子时是几点 丙子时柱男命的八字命理
动态IP和静态IP适用于哪个场景?有何区别
静态长效IP好用吗?分析静态长效IP的优劣势
五种提升分析问题的能力
烤肠吃多了有什么危害
火山石烤肠是生是熟?从制作工艺到食用建议全解析
孕妇可以吃土豆吗?营养师的全面解答