是否存在一个集合,它知道共享_ptr内部设备,并避免定期复制存储的共享_ptr元素,而是仅复制其内部弱指针?

这种隐含的意味着,将不会执行任何构造函数/驱动器调用,并且不会对共享_ptrs的参考计数器进行操纵。

有帮助吗?

解决方案

知道共享的_ptr内部,

那应该在那里回答您的问题。要了解内部内容,几乎可以肯定的是,这种集合必须成为Boost智能指针库的一部分。不幸的是,没有这样的事情。

这确实是明智的指针的缺点。我建议使用限制内部副本数量的数据结构。向量的重新分泌会很痛苦。也许是基于基础分配的Deque很有用。同样请记住,矢量实现倾向于在指数级增加块中获得新的记忆。因此,他们不会每10个要素重新分配。取而代之的是,您可能会从128个元素开始,然后矢量为256,然后移动到512、1024等。每次将所需内容加倍。

除此之外,还有Boost的PTR_VECTOR或使用足够的空间来预言数据结构以防止内部复制。

其他提示

从理论上讲,在采用C ++ 0x之后,将修改容器以在适当的情况下使用移动语义。在那时候, shared_ptr 也可以修改以具有移动构造函数,以最大程度地减少不必要的参考计数调整。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top