vmr*_*rob 22 c++ iterator unordered-map hashtable map
我有一个std :: unordered_map,我将从via迭代中删除元素.
auto itr = myMap.begin();
while (itr != myMap.end()) {
if (/* removal condition */) {
itr = myMap.erase(itr);
} else {
++itr;
}
}
Run Code Online (Sandbox Code Playgroud)
我想阻止地图执行任何昂贵的操作,直到我完成删除我需要删除的所有元素.我有一个有效的顾虑吗?我误解了内部存储的工作原理吗?
How*_*ant 10
在下列期间禁止无序容器重新散列erase:
[unord.req]/P14:
该
erase人员只能迭代器和引用无效被擦除的元素,并保留未擦除的元素的相对顺序.
[unord.req]/P9:
Rehashing使迭代器失效,元素之间的顺序改变,以及......
你的代码很好.