全网整合营销服务商

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

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

C++ map遍历的几种方式_C++ map迭代器与C++11 range for循环

C++中遍历std::map的常见方式包括:传统迭代器适用于所有标准,const_iterator用于只读访问,auto简化迭代器声明,C++11 range for循环推荐使用,C++17结构化绑定更清晰。

C++ 中 std::map 是一种常用的关联容器,用于存储键值对(key-value pairs),并自动按键排序。在实际开发中,经常需要遍历 map 中的所有元素。本文介绍几种常见的 C++ map 遍历方式,包括传统迭代器和 C++11 引入的 range for 循环。

使用传统迭代器遍历

这是最经典、兼容性最好的方式,适用于所有 C++ 标准版本。

通过 begin()end() 获取迭代器,然后用循环逐个访问元素。

#include 
#include 

std::map myMap = {{1, "apple"}, {2, "banana"}, {3, "cherry"}};

for (std::map::iterator it = myMap.begin(); it != myMap.end(); ++it) { std::cout << "Key: " << it->first << ", Value: " << it->second << std::endl; }

说明:

  • it->first 访问键(key)
  • it->second 访问值(value)
  • 迭代器是双向迭代器,支持 ++ 和 -- 操作

使用 const_iterator(只读遍历)

如果你只是读取 map 内容而不修改,建议使用 const_iterator,提高代码安全性。

for (std::map::const_iterator it = myMap.begin(); it != myMap.end(); ++it) {
    std::cout << "Key: " << it->first << ", Value: " << it->second << std::endl;
}

这种方式能防止意外修改 map 元素,适合在 const 函数或只读场景中使用。

使用 auto 简化迭代器声明(C++11 起)

C++11 支持 auto 关键字,可避免冗长的类型声明。

for (auto it = myMap.begin(); it != myMap.end(); ++it) {
    std::cout << "Key: " << it->first << ", Value: " << it->second << std::endl;
}

代码更简洁,且易于维护。如果 map 类型改变,无需修改循环中的类型。

使用 C++11 range for 循环(推荐)

C++11 引入了基于范围的 for 循环(range-based for),语法更直观。

for (const auto& pair : myMap) {
    std::cout << "Key: " << pair.first << ", Value: " << pair.second << std::endl;
}

说明:

  • pair 是 map 中每个元素的类型,即 std::pair
  • 使用 const auto& 可避免拷贝,提升性能
  • 只读场景下推荐加 const,防止误修改

若你需要修改 value(注意:不能修改 key),可以使用非 const 引用:

for (auto& pair : myMap) {
    pair.second += "_modified"; // 合法:修改 value
    // pair.first = 100; // 非法:key 是 const,不可修改
}

使用结构化绑定(C++17 起,额外补充)

如果你使用 C++17 或更高版本,可以进一步简化:

for (const auto& [key, value] : myMap) {
    std::cout << "Key: " << key << ", Value: " << value << std::endl;
}

语法更清晰,直接解包键值,是目前最推荐的写法(若编译器支持)。

基本上就这些常见方式。从兼容性考虑可用传统迭代器,新项目建议使用 range for + auto 或结构化绑定,代码更简洁安全。


# app  # ai  # c++  # ios  # apple  # stream  # 键值对  # for  # const  # auto  # 循环  # map  # 迭代  # 遍历  # 绑定  # 如果你  # 结构化  # 适用于  # 键值  # 更清晰  # 这是  # 是一种 


相关文章: 常州企业建站如何选择最佳模板?  如何用VPS主机快速搭建个人网站?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  制作网站的模板软件,网站怎么建设?  Android滚轮选择时间控件使用详解  企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?  香港服务器租用费用高吗?如何避免常见误区?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  如何通过FTP服务器快速搭建网站?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  简单实现Android验证码  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  上海网站制作开发公司,上海买房比较好的网站有哪些?  如何在万网开始建站?分步指南解析  如何在香港免费服务器上快速搭建网站?  如何选择高性价比服务器搭建个人网站?  如何在阿里云虚拟服务器快速搭建网站?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  如何快速上传建站程序避免常见错误?  专业公司网站制作公司,用什么语言做企业网站比较好?  贸易公司网站制作流程,出口贸易网站设计怎么做?  如何选择网络建站服务器?高效建站必看指南  建站之星各版本价格是多少?  简历在线制作网站免费版,如何创建个人简历?  建站之星如何优化SEO以实现高效排名?  如何快速搭建支持数据库操作的智能建站平台?  如何选择高效稳定的ISP建站解决方案?  浅析上传头像示例及其注意事项  宝塔新建站点为何无法访问?如何排查?  如何高效配置香港服务器实现快速建站?  公司门户网站制作流程,华为官网怎么做?  怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?  如何在自有机房高效搭建专业网站?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  如何通过二级域名建站提升品牌影响力?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  公司网站的制作公司,企业网站制作基本流程有哪些?  深圳网站制作培训,深圳哪些招聘网站比较好?  东莞专业制作网站的公司,东莞大学生网的网址是什么?  网站制作企业,网站的banner和导航栏是指什么?  如何选择最佳自助建站系统?快速指南解析优劣  建站之星展会模板:智能建站与自助搭建高效解决方案  宝塔建站助手安装配置与建站模板使用全流程解析  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  如何通过虚拟主机快速完成网站搭建?  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  潍坊网站制作公司有哪些,潍坊哪家招聘网站好? 

您的项目需求

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