【发布时间】:2018-01-26 08:12:30
【问题描述】:
pair<bool, char> pos_panlindrome(unordered_map<char, int>& smap){
for(auto m : smap){
m.second /= 2;
}
}
我在另一个调用 pos_panlindrome 的函数中声明了 smap。我希望将所有映射值(尽管有键值)减半。但不知何故,当我在 pos_panlindrome 函数之后打印出 smap 时,mapped_value 都没有改变。
为什么会这样?
【问题讨论】:
-
您忘记了 for 循环中的引用
for(auto m : smap) => for(auto& m : smap) -
在
auto m : smap,m是一个副本。如果更改要应用于原件,您需要参考。auto & m : smap
标签: c++