gpt4 book ai didi

c++ - 在 (unordered_)set 中修改 shared_ptr 是否安全?

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

存储在 setunordered_set 中的元素是不可变的。如果更改存储在 set 中的元素,这可能会导致该集合不再正常工作。但是,这是否包括将 shared_ptr 存储在集合中时指向的对象?

set 而言,它使用 less() 来比较两个对象。如果指向的对象更改或引用计数更改,结果不应更改。所以我会理解拥有一组 shared_ptr 并修改指向的对象是完全安全的。

但是,由于 unordered_set 使用 hash() 来计算其元素的哈希值,这相当于调用 hash() shared_ptr 的指向对象,修改指向的对象会给我们带来麻烦。

这是正确的吗?

最佳答案

智能指针的

hash() 等同于指针值的 hash(),但是指针值的 hash()只依赖于指针,而不依赖于指针对象。因此您可以安全地修改容器中的对象 - 哈希函数结果不会更改。

关于c++ - 在 (unordered_)set 中修改 shared_ptr 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25057920/

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