首页 > 解决方案 > C++ 在地图中查找和更改值

问题描述

我已经搜索但没有找到解决方案;这家庭作业的一部分,因此更多地寻找提示/解释而不是彻底的解决方案。

问题:我正在解析文件并将关键元素提取到地图中。我已将标准非常量映射声明为:map<label,element>。在程序的第二阶段,我需要定位“地图”中是否存在并替换其值。

我能够找到元素并打印它,但我似乎无法改变它。它不是一个常数,所以它应该是可编辑的,但也许我使用了错误的功能?

(((作为参考,i 是行号(19,存储在地图中的当前值),value_i 是存储的 int 变量我试图插入到我的第二个元素中(当前值为 0)))

        for (auto &el : labels) {
            if (el.second == i) {
                el.second == value_i;
                std::cout << "Label " << el.first << " value changed to: " << el.second << std::endl;
            }

输出:标签 n 值更改为:19

所需输出:标签 n 值更改为:0

提前致谢!!

标签: c++maps

解决方案


你犯了一个简单的错误el.second == value_i;- 你没有为 赋值second,你检查了它是否相等value_i。如果您的编译器没有给您任何警告,我建议您设置更高级别的警告(您可以在线阅读有关如何在每个编译器上执行此操作的信息),这样您就不会错过这么小的错误。

如果将此行代码更改为: el.second = value_i;

它会做你想要的。


推荐阅读