我在C ++中有一个unordered map
(umap):
unordered_map<int, bool> dTimeResetUmap;
我将其值设置为:
dTimeResetUmap[person.object_id] = true;
[person.object_id
可以是0, 1, 2, 3
任何int数。在代码的特定位置,我必须修改al中的所有值(基本上必须将所有值都设为false
),如下所示:
int size_of_dTimeResetUmap = dTimeResetUmap.size();
for (int i = 0; i <= size_of_dTimeResetUmap; i++)
{
dTimeResetUmap[i] = false;
}
但是它似乎没有任何价值。长时间运行代码后,dTimeResetUmap
中的值很少,仍然是true
而不是false
。可能是什么原因。这不是更新值的好方法。请帮助谢谢。
如果您使用索引运算符[]
访问映射中的值,并且键不在映射中,则将创建一个新的键值对,其默认值为“零”。
对于bool
值,此“零”将等于false
。
因此将所有元素设置为false
的最简单方法是仅设置remove all elements,因为对不存在的键的所有访问都将创建false
值:
dTimeResetUmap.clear();
使用C ++迭代来访问地图的每个元素:
for (auto & element : dTimeResetUmap)
{
element.second = false;
}
您可以使用STL迭代器;
for (auto it = umap.begin(); it != umap.end(); it++) {
(*it).second = false;
}