C++ 在地图中查找和更改值
C++ Find & Change Value in Map
我已经搜索过但没有找到解决方案;这 是 家庭作业的一部分,因此寻找 tips/explanation 而不是直接解决方案。
问题:
我正在解析文件并将关键元素提取到地图中。我已将我的标准非常量映射声明为:map
我能够找到该元素并打印它,但我似乎无法对其进行更改。它不是常量,所以它应该是可编辑的,但也许我使用了错误的函数?
((作为参考,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
提前致谢!!
您犯了一个简单的错误,即 el.second == value_i;
- 您没有为 second
赋值,您检查了它是否等于 value_i
。如果你的编译器没有给你任何警告,我建议设置更高级别的警告(你可以在线阅读关于如何在可能的每个编译器上做的),这样你就不会错过这么小的错误。
如果将这行代码改为:
el.second = value_i;
它会做你想做的事。
我已经搜索过但没有找到解决方案;这 是 家庭作业的一部分,因此寻找 tips/explanation 而不是直接解决方案。
问题: 我正在解析文件并将关键元素提取到地图中。我已将我的标准非常量映射声明为:map
我能够找到该元素并打印它,但我似乎无法对其进行更改。它不是常量,所以它应该是可编辑的,但也许我使用了错误的函数?
((作为参考,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
提前致谢!!
您犯了一个简单的错误,即 el.second == value_i;
- 您没有为 second
赋值,您检查了它是否等于 value_i
。如果你的编译器没有给你任何警告,我建议设置更高级别的警告(你可以在线阅读关于如何在可能的每个编译器上做的),这样你就不会错过这么小的错误。
如果将这行代码改为:
el.second = value_i;
它会做你想做的事。