新闻中心

C++如何遍历map容器_C++ map迭代器与auto关键字遍历方法

2025-11-26
浏览次数:
返回列表
C++中遍历map常用迭代器和auto关键字,推荐使用范围for循环结合const auto&高效访问键值对。

c++如何遍历map容器_c++ map迭代器与auto关键字遍历方法

在C++中,map 是一种关联容器,用于存储键值对(key-value pairs),并自动根据键进行排序。遍历 map 容器是日常开发中的常见操作,常用的方法包括使用迭代器和 auto 关键字。下面详细介绍这两种方式。

使用迭代器遍历 map

map 提供了 begin() 和 end() 成员函数,分别返回指向第一个元素和末尾之后位置的迭代器。通过循环结合迭代器可以访问每个键值对。

map 的迭代器指向的是 std::pair 类型的对象,first 成员为键,second 成员为值。

#include <iostream>
#include <map>
using namespace std;

int main() {
    map<string, int> scores = {{"Alice", 95}, {"Bob", 87}, {"Charlie", 92}};

    // 使用普通迭代器遍历
    for (map<string, int>::iterator it = scores.begin(); it != scores.end(); ++it) {
        cout << "Key: " << it->first << ", Value: " << it->second << endl;
    }

    return 0;
}

输出结果:

Key: Alice, Value: 95
Key: Bob, Value: 87
Key: Charlie, Value: 92

使用 const_iterator 遍历只读 map

如果 map 是 const 或你只想进行只读访问,应使用 const_iterator,这样更安全且符合语义。

for (map<string, int>::const_iterator it = scores.cbegin(); it != scores.cend(); ++it) {
    cout << it->first << ": " << it->second << endl;
}

使用 auto 关键字简化遍历(C++11 起)

C++11 引入了 auto 关键字,编译器可自动推导变量类型,极大简化了迭代器声明。

美图云修 美图云修

商业级AI影像处理工具

美图云修 50 查看详情 美图云修
// 使用 auto 声明迭代器
for (auto it = scores.begin(); it != scores.end(); ++it) {
    cout << it->first << " -> " << it->second << endl;
}

使用范围 for 循环 + auto(推荐写法)

C++11 还支持基于范围的 for 循环,结合 auto 可以写出更简洁、易读的代码。

// 范围 for 循环遍历 map
for (const auto& pair : scores) {
    cout << pair.first << ": " << pair.second << endl;
}

说明:

  • const auto& 表示对每一对键值引用访问,避免拷贝 pair 对象,提高效率。
  • 如果需要修改值,可使用 auto&,但不能修改 key(map 的 key 是 const 的)。

遍历时修改 value 值的例子

// 修改 map 中的 value
for (auto& pair : scores) {
    pair.second += 5;  // 加分操作
    cout << pair.first << "'s new score: " << pair.second << endl;
}

注意:不能通过 pair.first 修改 key,因为 map 中的 key 是不可变的。

基本上就这些。使用 auto 和范围 for 循环是现代 C++ 推荐的方式,代码更清晰、不易出错。迭代器方式在需要反向遍历或精确控制时仍有用武之地。掌握这些方法,能更高效地处理 map 容器。

以上就是C++如何遍历map容器_C++ map迭代器与auto关键字遍历方法的详细内容,更多请关注其它相关文章!


# 加分  # 海口seo接单  # 唐山营销推广直播平台  # 微信公共号营销推广方案  # 景德镇网站seo  # 盘锦抖音seo  # 外贸SEO课程拼课  # 网销蜂蜜营销推广方案  # 广州网站优化开户  # 短视频营销推广策划文案  # 如何做客户网站推广赚钱  # 第一个  # 是一种  # ai  # 边缘  # 的是  # 游戏开发  # 美图  # 键值  # 迭代  # 遍历  # 键值对  # stream  # ios  # c++ 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 支付宝碰一碰设备是REDMI手机吗 博主拆机辟谣:处理器、内存都不一样  Python自定义类排序:解决lambda键值访问TypeError的实践指南  如何使用J*aScript精确选择并批量修改特定父元素下子链接的样式  使用J*aScript检测输入元素是否包含在特定类中  如何使用Rector自动化升级旧代码_通过Composer安装和配置Rector进行代码重构  NRF24L01数据传输深度解析:解决大载荷接收异常与分包策略  vivo浏览器怎么扫描二维码 vivo浏览器内置扫一扫功能使用方法  2026年发布! 美少女养成动作RPG《神剑少女战记》发布实机演示  MinIO大规模对象列表性能瓶颈深度解析与外部元数据管理策略  sublime如何配置Go语言开发环境_sublime搭建Golang编译运行系统  整合Supabase认证与Django模型:跨模式迁移的解决方案  电脑IP地址怎么查 查看本机IP地址的几种方法  知音漫客正版漫画平台_知音漫客官网账号登录  在J*a中如何开发简易仓库管理与库存统计_仓库管理库存统计项目实战解析  sublime怎么格式化代码_sublime代码美化与一键排版插件配置  “在文档元素之后找到了标记”是什么错误? 检查并修复XML中多个根元素的3个方法  理解J*aScript Promise的微任务队列与执行顺序  漫蛙漫画官方首页 漫蛙2漫画在线阅读入口  Android Studio计算器C键逻辑错误排查与修复:条件判断优化指南  MAC怎么安装Homebrew包管理器_MAC为开发者和高级用户安装命令行工具  Win10如何恢复误删的快捷方式_Win10重建常用软件快捷方式  python3时间如何用calendar输出?  Pygame教程:解决用户输入与游戏状态更新不同步问题  深入理解字体排版:Adobe光学字偶距与CSS字偶距的差异与实现  QQ邮箱官方网站登录入口_QQ邮箱网页版在线使用  自定义Bag-of-Words实现:处理带负号的词汇权重  Odoo 16:在表单视图中基于当前记录动态修改Tree视图属性  PDF怎么合并PDF并保持格式_PDF合并文件保持排版教程  HTML空白字符处理机制:渲染、DOM与编码实践  在J*a中如何捕获IndexOutOfBoundsException_索引越界异常防护方法说明  KFC套餐升级怎么获取优惠代码_KFC套餐升级活动与优惠代码获取方法  一加手机拍照效果不好怎么办 一加哈苏影像调校与专业模式使用教程【高手篇】  12306怎么选座位选到安静区_12306选座安静区域选择策略  顺丰快件物流信息 官方网站查询入口  J*aScript中安全有效地处理localStorage字符串数据  基于动态规划的房屋花卉种植最小成本算法详解  品牌机怎么重装系统 联想/戴尔/惠普笔记本恢复出厂系统教程  反效果?《战地6》免费试玩开启后玩家数不升反降  CSS如何设置hover状态颜色_hover伪类调整背景或文字颜色  html5 app怎么运行环境_配html5 app运行环境【教程】  在J*a中如何开发在线活动报名与管理系统_活动报名管理项目实战解析  谷歌邮箱注册显示错误Gmail服务器异常与延迟处理  J*aScript对象创建方式_J*aScript设计模式应用  蓝湖怎样用切图标注提对接效率_蓝湖用切图标注提对接效率【设计对接】  在Go语言中利用后缀数组处理多字符串:实现高效文本匹配与自动补全  CSS Flexbox与媒体查询:实现响应式布局中元素的并排与堆叠  聚水潭ERP登录页面入口 聚水潭ERP官网登录界面  Mac怎么查看崩溃日志_Mac控制台错误报告分析  163邮箱网页版入口导航平台 163邮箱网页版登录入口官网导航  黑猫投诉统一入口官网 消费者权益保护投诉平台 

搜索