首页 > 后端开发 > C++ > 正文

c++如何遍历和修改map中的value_c++修改map中value值方法

裘德小鎮的故事
发布: 2025-10-20 23:51:01
原创
484人浏览过
答案:可通过迭代器、范围for循环或std::for_each修改map的value。使用非const迭代器或引用可安全更新value,但不可修改key;范围for需用auto&避免副本;std::for_each配合非const引用lambda也可实现。

c++如何遍历和修改map中的value_c++修改map中value值方法

在C++中,map 是一个关联容器,用于存储键值对(key-value pairs),其中每个键唯一。遍历并修改 map 中的 value 值是一个常见需求。下面介绍几种常用方法。

使用迭代器遍历并修改 value

通过普通迭代器可以访问 map 的元素。由于 map 的 value_type 是 std::pair<const Key, Value>,我们不能修改 key,但可以修改 value。

要修改 value,需使用可写引用,因此应使用非 const 迭代器,并对 second 成员(即 value)进行操作。

#include <map>
#include <iostream>

int main() {
    std::map<std::string, int> scores = {
        {"Alice", 80},
        {"Bob", 75},
        {"Charlie", 90}
    };

    for (auto it = scores.begin(); it != scores.end(); ++it) {
        it->second += 5; // 修改 value:每人加5分
    }

    for (const auto& pair : scores) {
        std::cout << pair.first << ": " << pair.second << "\n";
    }
    return 0;
}
登录后复制

输出结果:

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

Alice: 85
Bob: 80
Charlie: 95

使用范围 for 循环(C++11 及以上)

C++11 支持基于范围的 for 循环,更简洁。注意必须使用引用(&),否则修改的是副本,不会影响原 map。

图改改
图改改

在线修改图片文字

图改改455
查看详情 图改改
for (auto& pair : scores) {
    pair.second *= 2; // 每个 value 翻倍
}
登录后复制

这里 auto& 表示对每一对键值的引用。如果写成 autoconst auto&,都无法修改 value。

使用 std::for_each(函数式风格)

也可以用 std::for_each 配合 lambda 表达式来实现修改。

#include <algorithm>

std::for_each(scores.begin(), scores.end(),
    [](std::pair<const std::string, int>& p) {
        p.second += 10;
    });
登录后复制

lambda 参数必须是引用类型,且不能是 const,否则无法修改。

注意事项

  • map 的 key 是 const 类型,所以不能通过迭代器修改 key,例如 it->first = "new_key" 会导致编译错误
  • 循环中若需要插入或删除元素,应避免使用范围 for 循环,而使用传统迭代器,并注意迭代器失效问题。
  • 如果只是读取 value,推荐使用 const auto& 提升效率和安全性。
基本上就这些。只要记住使用引用,就可以安全地修改 map 中的 value 值。

以上就是c++++如何遍历和修改map中的value_c++修改map中value值方法的详细内容,更多请关注php中文网其它相关文章!

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号