gpt4 book ai didi

c++ - 如何在删除元素时防止重新散列 std::unordered_map?

转载 作者:IT老高 更新时间:2023-10-28 21:47:57 40 4
gpt4 key购买 nike

我有一个 std::unordered_map,我将从迭代中删除元素。

auto itr = myMap.begin();
while (itr != myMap.end()) {
if (/* removal condition */) {
itr = myMap.erase(itr);
} else {
++itr;
}
}

我想阻止 map 执行任何昂贵的操作,直到我完成删除所有需要删除的元素。我有正当的担忧吗?我是否误解了内部存储的工作原理?

最佳答案

erase期间禁止无序容器重新散列:

[unord.req]/p14:

The erase members shall invalidate only iterators and references to the erased elements, and preserve the relative order of the elements that are not erased.

[unord.req]/p9:

Rehashing invalidates iterators, changes ordering between elements, and ...

你的代码没有问题。

关于c++ - 如何在删除元素时防止重新散列 std::unordered_map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13730470/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com