如何在C++中修改无序映射中的每个值 我在C++中有一个无序映射UMAP: unordered_map<int, bool> dTimeResetUmap;

如何在C++中修改无序映射中的每个值 我在C++中有一个无序映射UMAP: unordered_map<int, bool> dTimeResetUmap;,c++,unordered-map,C++,Unordered Map,person.object_id可以是0、1、2、3或任何整数。在代码的某一点上,我必须修改所有的值,其中的值基本上必须使所有的值都为false,我这样做如下: int size_of_dTimeResetUmap = dTimeResetUmap.size(); for (int i = 0; i <= size_of_dTimeResetUmap; i++) { dTimeResetUmap[i] = false; } 但这似乎并没有带来什么价值。经过长时间的代码运行后,D

person.object_id可以是0、1、2、3或任何整数。在代码的某一点上,我必须修改所有的值,其中的值基本上必须使所有的值都为false,我这样做如下:

int size_of_dTimeResetUmap = dTimeResetUmap.size();

for (int i = 0; i <= size_of_dTimeResetUmap; i++)
{
    dTimeResetUmap[i] = false;
}

但这似乎并没有带来什么价值。经过长时间的代码运行后,DTIMESETUMAP中的值很少,它保持为true而不是false。原因可能是什么。这不是更新值的好方法吗。请帮助,谢谢。

如果您使用索引运算符[]访问映射中的值,而该键不在映射中,则将创建一个新的键值对,默认值为零

对于布尔值,该零将等于false

因此,将所有元素设置为false的最简单方法是,对不存在的键的所有访问都将创建false值:


使用C++迭代访问地图的每个元素:

对于自动元素(&E):DTIMESETUMAP { element.second=false; }
您可以使用STL迭代器

for (auto it = umap.begin(); it != umap.end(); it++) {
  (*it).second = false;
}
dTimeResetUmap.clear();
for (auto it = umap.begin(); it != umap.end(); it++) {
  (*it).second = false;
}