C++,STL容器 set/multiset:集合/多重集合深入解析

C++,STL容器 unordered_set/unordered_multiset:无序集合/无序多重集合深入解析 unordered_set和unordered_multiset是C++11引入的哈希容器,以平均O(1)时间复杂度提供快速元素访问能力。与有序容器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"};
// 元素顺序:Apple, banana
C++,如何写单元测试用例? 编写单元测试用例是C++开发中不可或缺的一环。通过选择合适的测试框架、编写完善的测试用例,并结合自动化测试工具,可以提高代码的测试覆盖率和效率,确保代码的质量和稳定性。希望本文能够为您在C++单元测试方面提供有益的指导。 阅读详情

相关推荐

C++,STL容器适配器,stack:栈深入解析

std::stack是C++标准模板库(STL)提供的容器适配器,遵循后进先出(LIFO)原则。它基于底层容器(默认std::deque)封装实现,为栈操作提供统一接口。

汽车电子软件领域知识分享 2132

多模态数据集对比:MicroLens、PixelRec和Amazon在电商推荐中的表现差异

本文深入对比了三大主流多模态数据集MicroLens、PixelRec和Amazon在电商推荐中的表现差异。通过实际测试数据,分析了这些数据集在冷启动处理、模态融合、稀疏性挑战等关键场景下的真实表现,为算法工程师和研究员提供实用指南。特别关注多模态数据集的选择对推荐系统效果的影响,帮助开发者优化模型性能。

weixin_28717939的博客 418

【SEED Labs 2.0】V*N Tunneling Lab

本文为 SEED Labs 2.0 - V*N Tunneling Lab 的实验记录。本实验工作量较大,但难度不大,重点在于搞清是谁发给谁,走的什么路径。另外,本次实验由于网络中的设备较多,修改了环境变量方便分清哪个窗口是哪个设备。这样操作起来就方便多了。...

Chenyang的博客 6977

CSS字体样式全攻略

🧱 让文字有空间感,适合标题或LOGO。🖋️适合插画、创意工作者的个人页面。🔥 适合标题、品牌名,视觉冲击力强。🧘‍♀️适合极简设计、文化类网站。✨适合科技类网站、博客、作品集。🚀适合游戏、AI、科技类项目。🐰 适合儿童类网站或节日氛围。📖适合时尚、生活方式类内容。🌫️ 适合神秘、梦幻主题。🌃 夜店风、科技感十足。具体效果是文字会上下跳动。

dreams_dream的博客 1806

TensorFlow实战:5步搞定因果推断模型TARNet(附完整代码)

本文提供了一份基于TensorFlow的TARNet因果推断模型实战指南。通过五个清晰步骤,从数据预处理、模型构建到训练评估,详细讲解了如何利用深度模型解决营销评估、疗效分析等场景中的因果效应估计问题,并附有完整代码解决样本不平衡等工程挑战。

python9snake的博客 416

MultiOTP Credential Provider避坑指南:从安装到RDP双因素认证的全流程解析

本文详细解析了MultiOTP Credential Provider从安装到实现RDP双因素认证(MFA)的全流程,重点分享了Docker部署、Active Directory集成及网络级认证(NLA)兼容性等环节的实战避坑经验,旨在帮助运维人员高效、稳定地部署离线双因素认证方案,提升Windows远程桌面安全性。

weixin_29255731的博客 642

Vue3 - 完美解决高德地图定位失败 Get ipLocation failed.Geolocation permission denied.(获取ipLocation失败。地理定位权限被拒绝。)

Get ipLocation failed.Geolocation permission denied.,vue3引入高德地图当前定位失败 ,vue3中使用高德地图定位报错,高德地图API用户定位失败,高德地图H5 定位失败报错排查和解决方案,微信公众号H5网页高德地图定位报错,谷歌浏览器-高德地图定位失败geolocation,getCurrentPosition 返回的 message报错,如何解决此问题,uniapp h5高德地图,微信、QQ等内置浏览器定位失败,高德地图实现实时用户位置定位,引入高德

🏆 前端领域优质创作者 4171

MIKE水动力笔记8_冷启动与热启动

在【MIKE水动力笔记5_建立水动力模型】中,讲到【Step 2 设置模型参数】中的【Initial Conditions】时,提到了冷启动与热启动。本博文就详细讲解何为冷启动、热启动,并通过一个案例具体分析两者不同。...

晏长街的博客 6568

华为数通方向HCIP-DataCom H12-831题库(多选题:121-140)

华为数通HCIP H12-831多选题

didiplus 1291

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: Cortex-M异常处理深度解析:从HardFault到调试实战
下一篇: C++,STL 迭代器简介:概念、分类、操作
智驾
博客等级 码龄11年 6671粉丝 574原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智驾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值