unordered_map::iterator->first的地址是否会在后续插入和删除时发生变化?

Does address of an unordered_map::iterator->first change upon subequent insertions & deletions?

本文关键字:插入 删除 变化 是否 iterator- map gt unordered 地址 first      更新时间:2023-10-16

一旦将键值对插入到unordered_map中,假设iter指向该对,&iter->first在unordered_map中存在的该对的整个生命周期中是否会保持不变?

键大多是长字符串,所以我想将它们的迭代器>first的地址存储在其他引用位置,而不是字符串本身。

除非直接擦除元素,否则会没问题的。

对于std::unordered_map::insert

如果由于插入而发生重新哈希,则所有迭代器都将失效。否则,迭代器不受影响。参考文献不会失效。仅当新的元素数大于 max_load_factor()*bucket_count() 时,才会进行重新哈希。

对于std::unordered_map::erase

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