专门用于共享_ptr的集合
-
12-09-2019 - |
题
是否存在一个集合,它知道共享_ptr内部设备,并避免定期复制存储的共享_ptr元素,而是仅复制其内部弱指针?
这种隐含的意味着,将不会执行任何构造函数/驱动器调用,并且不会对共享_ptrs的参考计数器进行操纵。
解决方案
知道共享的_ptr内部,
那应该在那里回答您的问题。要了解内部内容,几乎可以肯定的是,这种集合必须成为Boost智能指针库的一部分。不幸的是,没有这样的事情。
这确实是明智的指针的缺点。我建议使用限制内部副本数量的数据结构。向量的重新分泌会很痛苦。也许是基于基础分配的Deque很有用。同样请记住,矢量实现倾向于在指数级增加块中获得新的记忆。因此,他们不会每10个要素重新分配。取而代之的是,您可能会从128个元素开始,然后矢量为256,然后移动到512、1024等。每次将所需内容加倍。
除此之外,还有Boost的PTR_VECTOR或使用足够的空间来预言数据结构以防止内部复制。
其他提示
从理论上讲,在采用C ++ 0x之后,将修改容器以在适当的情况下使用移动语义。在那时候, shared_ptr
也可以修改以具有移动构造函数,以最大程度地减少不必要的参考计数调整。
不隶属于 StackOverflow