如果我有一个 unordered_map<key, someNiceObject>
(注意 someNiceObject
不是指针)
我有一个 API 可以插入一个新元素,然后返回指向 someNiceObject
的指针现在在 map 上。
如果我在 map 中执行进一步的插入操作,容量可能会发生变化。如果发生这种情况,指针是否仍然有效?
我试着阅读 Basic questions: Pointers to objects in unordered_maps (C++) , std::unordered_map pointers/reference invalidation和 http://eel.is/c++draft/unord.req#9
找不到必要的信息
谢谢大家
虽然会感谢这里有人对 SO 的第二次确认。
最佳答案
根据 cppreference :
If rehashing occurs due to the insertion, all iterators are invalidated. Otherwise iterators are not affected. References are not invalidated.
这意味着指针也不会失效。这是可能的,因为 std::unordered_map
在概念上可以被认为是 std::vector<std::forward_list<std::pair<Key, Value>>>
.自 std::forward_list
与任何其他链表一样,单独分配每个元素,对列表的更改不会影响其元素的内存位置。
关于c++ - 调整大小后指向元素值的 unordered_map 指针是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53149145/