gpt4 book ai didi

c++ - 到处使用共享指针有什么陷阱?

转载 作者:太空狗 更新时间:2023-10-29 20:49:40 24 4
gpt4 key购买 nike

我们的代码库使用了许多 vector 。其中一些 vector 彼此共享对象,即它们包含共享对象的 std::shared_ptr。问题是:代码库仍处于活跃的开发阶段,经常需要将一些包含值的 vector 重写为包含共享指针的 vector 。这很乏味。所以我想出了一个主意:简单地将所有 vector 作为共享指针的 vector 。

问题:可以吗?我应该注意哪些注意事项?会出什么问题?

我进行了一些简单且可能幼稚的测量,在初始化和查询时,值 vector 和共享指针 vector 之间的性能几乎没有差异。

如果性能不是问题,还有什么我应该注意的吗?

最佳答案

我认为这是个坏主意,JAVA 就是这样做的,而且当您失去对共享对象的跟踪并通过在庞大代码库中的某处进行一些临时更改来“破坏”它时,这通常会导致问题。

如果将 std::vector 与内部对象一起使用,它几乎没有性能问题,除非包含的对象非常大或具有复杂的构造函数。

您应该仅在严格需要时才在 vector 中使用指针(共享或不共享),例如:

  • 如果包含的对象是多态的
  • 如果包含的对象有一些非平凡的可克隆字段(IE std::mutex)
  • 如果包含的对象真的很大(即视频帧)

关于c++ - 到处使用共享指针有什么陷阱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57822127/

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