gpt4 book ai didi

c++ - 调整大小后指向元素值的 unordered_map 指针是否有效?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:59:10 29 4
gpt4 key购买 nike

如果我有一个 unordered_map<key, someNiceObject>

(注意 someNiceObject 不是指针)

我有一个 API 可以插入一个新元素,然后返回指向 someNiceObject 的指针现在在 map 上。

如果我在 map 中执行进一步的插入操作,容量可能会发生变化。如果发生这种情况,指针是否仍然有效?

我试着阅读 Basic questions: Pointers to objects in unordered_maps (C++) , std::unordered_map pointers/reference invalidationhttp://eel.is/c++draft/unord.req#9

找不到必要的信息

谢谢大家

编辑:指针似乎是有效的(https://www.thecodingforums.com/threads/do-insert-erase-invalidate-pointers-to-elements-values-of-std-unordered_map.961062/)

虽然会感谢这里有人对 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com