微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么地图值不更新?

如何解决为什么地图值不更新?

我的代码中有这个免费功能

void changeRanks(int n,map<int,double>& id_rank_map)
{
  cout << "n : " << n << endl;
  
  for(auto itr : id_rank_map)
  {
    itr.second = double(1) / double(n);
  }
}

我已经验证了 'n' 不是 0,但即使在从 'main' 函数访问时,'id_rank_map' 中的每个值仍然是 0.00,即使在 for 循环内的行执行之后也是如此。

我该如何更新?

解决方法

当使用基于范围的 for 循环时,: 左边的变量不是迭代器,而是值本身:

for(auto v : id_rank_map)

拼写:

for(std::pair<const int,double> v : id_rank_map)

这样写,现在很明显,在每次迭代中,都会创建一个值的副本,然后修改,然后丢弃。将其改为引用,避免复制,并修改容器中存储的值:

for(std::pair<const int,double>& v : id_rank_map)
// or
for(auto& v : id_rank_map)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。