当前位置: 首页 > news >正文

C++ map和set的使用

mapset都属于STL 关联容器,底层默认用红黑树实现,特点是:自动排序、键唯一、查找快 O (log n)


一、set 用法(集合)

只存键,不存值,元素自动升序,不重复

1. 头文件

cpp

运行

#include <set> using namespace std;

2. 常用操作

cpp

运行

set<int> s; // 插入 s.insert(3); s.insert(1); s.insert(2); s.insert(3); // 重复,自动忽略 // 删除 s.erase(2); // 按值删除 auto it = s.find(1); s.erase(it); // 按迭代器删除 // 查找 if (s.find(5) != s.end()) // 找到返回迭代器 cout << "存在"; // 大小/清空 s.size(); s.empty(); s.clear();

3. 遍历

cpp

运行

// 范围for for (auto x : s) { cout << x << " "; } // 迭代器 for (auto it = s.begin(); it != s.end(); ++it) { cout << *it << " "; }

二、map 用法(键值对映射)

存 key-value,key 唯一、自动升序排序

1. 头文件

cpp

运行

#include <map>

2. 常用操作

cpp

运行

map<int, string> mp; // 插入 mp[1] = "Tom"; // 最简单 mp.insert({2, "Jerry"}); mp.insert(make_pair(3, "Alice")); // 访问 cout << mp[1]; // 直接用key访问 // 查找 auto it = mp.find(2); if (it != mp.end()) cout << it->second; // 输出 value // 删除 mp.erase(1); // 按键删 mp.erase(it); // 按迭代器删 // 大小/清空 mp.size(); mp.empty(); mp.clear();

3. 遍历

cpp

运行

for (auto& p : mp) { cout << p.first << ": " << p.second << endl; }
  • p.first→ key
  • p.second→ value

三、unordered_set /unordered_map(哈希版)

  • 底层是哈希表
  • 不排序,但查找更快 O (1)
  • 用法几乎一样,头文件:

    cpp

    运行

    #include <unordered_set> #include <unordered_map>

四、核心区别速记

表格

容器特点底层查找
set唯一元素,自动排序红黑树O(log n)
mapkey-value,key 唯一、排序红黑树O(log n)
unordered_set唯一元素,不排序,更快哈希表O(1)
unordered_mapkey-value,不排序,更快哈希表O(1)

五、最简单总结

  • 去重 + 排序→ 用set
  • 键值映射 + 排序→ 用map
  • 追求最快查找、不关心顺序→ 用 unordered 版本
http://www.jsqmd.com/news/682790/

相关文章:

  • LFM2.5-VL-1.6B效果展示:科研论文图→方法复现步骤图文拆解+公式解释
  • 保姆级教程:在Ubuntu上为AM5728开发板交叉编译GPSD 3.18(附依赖库避坑指南)
  • Jack DP 滚动数组
  • 248MHz RISC-V MCU还能这么玩?手把手教你用AG32VF407内置的2KLE CPLD做高速数据采集
  • QQ邮箱发送文件时删除重复次数后缀
  • 终极指南:如何用AutoLegalityMod插件3分钟创建100%合法宝可梦
  • 别再手动对齐了!用LaTeX的tabularx和booktabs包,5分钟搞定论文符号表
  • 2026年角钢厂家推荐:泰安市金根商贸有限公司,角钢、印标角钢、船用角钢等全系供应 - 品牌推荐官
  • 语言模型在物理构建任务中的表现与挑战
  • 实战:利用GstBuffer元数据(Meta)为音视频流添加自定义信息
  • 多语言语义误差率≤0.5%:世界500强出海企业评估GEO跨文化适配能力的核心标尺 - 资讯焦点
  • FPGA异步FIFO实战:用紫光同创PGL50H开发板搞定跨时钟域数据传输(附完整代码)
  • 4大架构优势:深度解析企业级工作流平台RuoYi-Flowable-Plus
  • 2026年2 - 咪唑酮等化工产品厂家推荐:山东东豪化学有限公司,2 - 咪唑酮、乙烯脲等全系供应 - 品牌推荐官
  • 2026年医疗废物处理设备厂家推荐:潍坊志特环保科技有限公司,提供医疗废物双轴撕碎机等多元环保处理方案 - 品牌推荐官
  • 蓝思科技等精密制造企业:消费电子承压,新业务成增长关键
  • 手把手教你用IndexTTS 2.0:零基础也能玩转AI配音,轻松制作有声书
  • 如何快速掌握八大网盘直链解析:LinkSwift完整使用指南
  • 用手机APP和STM32玩转RC522:从读卡到写卡,一个完整项目实战(附源码)
  • 解放双手的终极方案:KeymouseGo如何用零代码自动化重塑你的数字工作流
  • 用Wireshark抓包实战:一步步拆解Modbus TCP数据帧(附报文实例)
  • 混合摊销推断在光学组织特性分析中的应用与优化
  • GPU加速批量轨迹优化GATO在机器人MPC中的应用
  • 别再乱改权限了!手把手教你用 `pm grant` 命令安全授权(附Android 4.2+避坑指南)
  • Minecraft服务器RPG技能系统终极实战:mcMMO深度配置与性能优化指南
  • 别再死磕单载波了!用MATLAB手把手仿真OFDM系统,5分钟搞懂多载波通信原理
  • 弹性网络回归:原理与Python实战指南
  • Stata实战:用5种方法搞定分组回归系数差异检验(附完整代码与避坑指南)
  • 车载通信架构 —— DDS协议在智能驾驶数据共享中的核心实践
  • 从Smithsonian博物馆到GrabCAD机械库:揭秘5个垂直领域的宝藏3D模型下载站