unordered_map :: iterator->的地址首先根据后续插入进行更改&缺失?

时间:2016-02-19 01:54:36

标签: c++ iterator unordered-map

一旦将一个键值对插入到unordered_map中并且让它说它指向这一对,那么& iter->首先会在unordered_map中存在的该对的整个生命周期内保持不变吗?

密钥主要是长字符串,所以我想在其他引用位置而不是字符串本身存储它们的迭代器 - >地址。

1 个答案:

答案 0 :(得分:1)

除非你直接删除元素,否则没问题。

对于std::unordered_map::insert

  

如果由于插入而发生重新散列,则所有迭代器都将失效。否则迭代器不会受到影响。 引用不会失效。仅当新元素数大于max_load_factor()*bucket_count()时才会发生重新散列。

对于std::unordered_map::erase

  

擦除元素的引用和迭代器无效。 其他迭代器和引用不会失效