问题描述
我在 C++ 中使用 std::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]]++;
}