如何增加地图中的前一个值?

问题描述

我在 C++ 中使用 std::map 数据结构,并且每次都尝试在某个位置增加值。

如果我知道 map一个一个与该特定键相关联的

所以我正在迭代一个 array,其中存储了唯一的整数。

我试图做的是,当我迭代数组时,将存储在数组特定索引中的值作为传递给我的地图。

例如:

std::map<int,int> my_map;
for(int i = 0; i < array.size(); ++i)
{
    my_map.insert(array[i],...); // the ... part is supposed to be the increment
}

我想通过 ++my_map[array[i]]。我还没有尝试过,因为我目前无法访问我的笔记本电脑。这只是我不在家时想到的一个想法,我想问问是否确定。

此外,如果 my_map[array[i]] 有效,我想将其用作循环中的 if 语句:

std::map<int,int> my_map;
for(int i = 0; i < array.size(); ++i)
{
    // set the initial value to 0 if the element doesn't exist in the map
    // else increment the prevIoUs value by one
    if(!my_map.find(array[i]))
    {
       my_map.insert(array[i],0);
    }
    else
    {
       my_map.insert(array[i],++my_map[array[i]]);
    }
}

如果我脑子里有问题,请纠正我。我希望我把我的问题翻译得足够好让你理解它。谢谢大家!

编辑: 正如我在评论中所说,正确的代码是:

for(int i = 0; i < array.size(); ++i)
{
    // set the initial value to 0 if the element doesn't exist in the map
    // else increment the prevIoUs value by one
    if(!(my_map.count(array[i])))
    {
        my_map.insert(std::pair<int,int>(array[i],0));
    }
    else
    {
        my_map.insert(std::pair<int,++my_map[array[i]]));
    }
}

再次感谢大家!!!

解决方法

  if(my_map.find(array[i])==my_map.end()){//YOU CAN ALSO USE stl function count
      my_map.insert(make_pair(array[i],0));
   }else{
      my_map.insert(make_pair(array[i],++my_map[array[i]]));
   }
   OR:
   if(my_map.find(array[i])==my_map.end()){
      my_map[array[i]]=0;
   }else{
      my_map[arr[i]]++;
   }