unordered_map::iterator->first的地址是否会在后续插入和删除时发生变化?
Does address of an unordered_map::iterator->first change upon subequent insertions & deletions?
一旦将键值对插入到unordered_map中,假设iter指向该对,&iter->first在unordered_map中存在的该对的整个生命周期中是否会保持不变?
键大多是长字符串,所以我想将它们的迭代器>first的地址存储在其他引用位置,而不是字符串本身。
除非直接擦除元素,否则会没问题的。
对于std::unordered_map::insert
,
如果由于插入而发生重新哈希,则所有迭代器都将失效。否则,迭代器不受影响。参考文献不会失效。仅当新的元素数大于
max_load_factor()*bucket_count()
时,才会进行重新哈希。
对于std::unordered_map::erase
,
对已擦除元素的引用和迭代器将失效。其他迭代器和引用不会失效。
相关文章:
- 插入或删除时获取usb的dos_name
- 如何插入 4 个空格宽的制表符并将它们删除两个空格?
- 数组 X[n] 仅存储名称.编写算法以在数组中插入或删除 ITEM
- 无法使用带有 std::move 的自定义删除器插入 std::unique_ptr
- 插入指针数组会删除上一个结果
- 在 QSet 中插入元素<QString>并检索 ,删除 QSet 的最后一项
- 遍历 STL 映射(集/多集)的最佳方法,同时元素可能会在循环期间被删除并重新插入?
- BST插入,删除,搜索
- 使用链表在堆栈中插入和删除
- 哪个容器对于C++中的多次插入/删除最有效
- 在拖放 QML 列表中插入/删除项目使用 cpp 模型查看
- 如何插入/删除多音阶中相同值的某些元素
- 在C 中的链接列表中插入/删除
- 懒惰插入 /删除
- std::map的迭代器,允许修改值,但不允许插入/删除
- 具有非常快速的内>数据查找和快速反向查找(搜索/插入/删除数据)的压缩字典?
- 链表插入/删除
- 如果存在插入/删除/重新散列操作,则unordered_map复制/释放包含的对象
- 在C++非GUI应用程序中检测USB插入/删除
- 什么是具有快速插入+删除和部分反转的良好数据结构