如何在C++中修改无序映射中的每个值 我在C++中有一个无序映射UMAP: unordered_map<int, bool> dTimeResetUmap;
person.object_id可以是0、1、2、3或任何整数。在代码的某一点上,我必须修改所有的值,其中的值基本上必须使所有的值都为false,我这样做如下:如何在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
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;
}