gpt4 book ai didi

c++ - 从没有所有权的容器中清除 Smart Ptr 的模式

转载 作者:搜寻专家 更新时间:2023-10-31 01:35:30 25 4
gpt4 key购买 nike

我需要在 map 上放置一个智能指针。该映射不拥有该对象,但该对象在其他地方有多个 shared_ptr。

如果对象的所有其他 shared_ptr 都被销毁,我如何确保从该映射中删除 key ,而不定期轮询映射?

最佳答案

如果“没有轮询”,您的意思是您希望 std::shared_ptr 为您处理所有事情,然后知道这不是 std::shared_ptr 的特性.的确,shared_ptr 知道它当前的使用计数,但它没有收到任何信号来更新它的任何更改。

然而,您可以有一个有时但不是一直执行检查的解决方案。

我建议使用包含 std::weak_ptrstd::map而不是 std::shared_ptr。您将需要运行检查以查看哪些 ptrs 无效并将其删除。检查的频率由您决定。例如,您可以仅在添加新项目并且 map 中的项目超过 20,000 时才检查您的 map 。

关于c++ - 从没有所有权的容器中清除 Smart Ptr 的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37272687/

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