hash_map.erase会使所有迭代器失效吗?

时间:2011-02-18 13:42:27

标签: c++ iterator hashmap

std::hash_map不是C++ standard的一部分,而是标准库扩展的一部分。例如,它是为VS2005定义的。通常std::hash_map.erase会使std::hash_map的所有迭代器无效吗?据推测,当删除元素以优化内存使用时,可以将内存重新分配给较小的数组。

hash_map.erase实际上是否使所有迭代器无效?

1 个答案:

答案 0 :(得分:2)

看起来它在文档中的VS2005示例中指定:

每个元素都包含一个单独的键和一个映射值。序列以允许查找,插入和删除任意元素的方式表示,其中许多操作独立于序列中的元素数量(恒定时间) - 至少在最好的情况下。此外,插入元素不会使迭代器无效,并且删除元素只会使那些指向被删除元素的迭代器无效。