全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

c++ map容器如何使用 键值对的插入、查找和删除【教程】

map 是基于红黑树的有序关联容器,键唯一且自动升序;支持 operator[]、insert()、emplace() 插入;查找推荐用 find(),避免 operator[] 意外插入;删除用 erase();遍历用范围 for 循环。

map 是 C++ 标准库中常用的关联容器,底层通常基于红黑树实现,自动按键(key)升序排序,支持高效查找、插入和删除,时间复杂度均为 O(log n)。它存储的是键值对(key-value pairs),且每个键唯一。

插入键值对

有多种方式向 map 插入元素,常用方法包括:

  • operator[]:用键作为下标赋值,若键不存在则自动构造默认值并插入;若已存在,则覆盖对应 value。
    例如:myMap["apple"] = 5; —— 若 "apple" 不存在,插入 {"apple", 5};若已存在,则将 value 改为 5。
  • insert():更安全的插入方式,不会覆盖已有键,返回一个 pair,second 表示是否插入成功。
    例如:auto ret = myMap.insert({"banana", 3});ret.second 为 true 表示新插入,false 表示键已存在。
  • emplace():就地构造键值对,避免临时对象拷贝,效率略高(尤其对大对象)。
    例如:myMap.emplace("cherry", 7);

查找键对应的值

查找操作不改变容器,主要有以下几种方式:

  • operator[]:最简写法,但注意——若键不存在,会自动插入该键并赋予 value 默认值(如 int 为 0),这可能不是你想要的行为。
  • at():带边界检查,若键不存在抛出 std::out_of_range 异常,适合需要严格校验的场景。
    例如:int count = myMap.at("apple");
  • find():推荐方式。返回迭代器,若找到则指向对应键值对,否则等于 end()
    例如:auto it = myMap.find("apple"); if (it != myMap.end()) { cout second; }

删除指定键或范围

删除操作通过 erase() 完成,有三种重载形式:

立即学习“C++免费学习笔记(深入)”;

  • erase(key):直接传入键,删除该键对应元素,返回删除的元素个数(0 或 1)。
  • erase(iterator):删除指定迭代器位置的元素,返回下一个有效迭代器(可用于循环中安全删除)。
  • erase(first, last):删除 [first, last) 范围内的所有元素(较少用于 map,因 key 有序,多用于子范围清理)。

遍历与注意事项

map 支持基于范围的 for 循环:

for (const auto& kv : myMap) { cout

注意点:

  • 键类型必须支持 比较(默认用 std::less),自定义类需重载 operator 或提供比较函数。
  • map 中的 key 不可修改(因为会影响排序结构),如需修改,应先 erase 再 insert。
  • 若只需哈希查找且不关心顺序,可考虑 unordered_map(平均 O(1) 查找,但无序)。


# app  # ai  # c++  # apple  # 键值对  # 标准库  # if  # count  # for  # const  # auto  # bool  # int  # 循环  # operator  # map  # 对象  # 不存在  # 键值  # 升序  # 遍历  # 迭代  # 默认值  # 的是  # 红黑  # 已有  # 只需 


相关文章: 小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  长沙企业网站制作哪家好,长沙水业集团官方网站?  公众号网站制作网页,微信公众号怎么制作?  如何在Windows服务器上快速搭建网站?  ,在苏州找工作,上哪个网站比较好?  北京网站制作公司哪家好一点,北京租房网站有哪些?  高端云建站费用究竟需要多少预算?  如何破解联通资金短缺导致的基站建设难题?  如何选择高效稳定的ISP建站解决方案?  C++如何使用std::optional?(处理可选值)  企业微网站怎么做,公司网站和公众号有什么区别?  宝塔新建站点为何无法访问?如何排查?  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  简单实现Android文件上传  如何选择最佳自助建站系统?快速指南解析优劣  javascript基本数据类型及类型检测常用方法小结  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  ,柠檬视频怎样兑换vip?  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  网站制作公司排行榜,抖音怎样做个人官方网站  如何制作一个表白网站视频,关于勇敢表白的小标题?  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  名字制作网站免费,所有小说网站的名字?  如何用PHP快速搭建CMS系统?  ,怎么用自己头像做动态表情包?  如何在Windows环境下新建FTP站点并设置权限?  沈阳制作网站公司排名,沈阳装饰协会官方网站?  淘宝制作网站有哪些,淘宝网官网主页?  定制建站是什么?如何实现个性化需求?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  已有域名建站全流程解析:网站搭建步骤与建站工具选择  建站之星免费版是否永久可用?  建站之星备案是否影响网站上线时间?  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  海南网站制作公司有哪些,海口网是哪家的?  高防服务器租用指南:配置选择与快速部署攻略  建站主机选哪种环境更利于SEO优化?  武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?  青岛网站建设如何选择本地服务器?  贸易公司网站制作流程,出口贸易网站设计怎么做?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  建站上市公司网站建设方案与SEO优化服务定制指南  制作证书网站有哪些,全国城建培训中心证书查询官网?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  如何在搬瓦工VPS快速搭建网站?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  在线制作视频网站免费,都有哪些好的动漫网站?  如何构建满足综合性能需求的优质建站方案?  如何选择高效响应式自助建站源码系统?  武清网站制作公司,天津武清个人营业执照注销查询系统网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。