[英]shared_ptr to vector of shared_ptr
我有以下课程
struct Images {
std::vector< std::shared_ptr<byte[]> > ptr_vector;
}
复制Images
时,将ptr_vector
放在std::shared_ptr
会不会更有效率? 即做Images A; Images B = A;
Images A; Images B = A;
struct Images {
std::shared_ptr< std::vector<std::shared_ptr<byte[]>> > vector_ptr;
}
除了复制矢量并增加多个shared_ptr参考计数外,此处仅执行一次。
这种方法有什么问题/局限性吗?
是的,如果您仅必须复制一个指针,则复制效率更高。
限制是任何指针,您共享公共数据。 当您修改一个struct Images
,另一个也会被修改。
如果要共享数据,还可以考虑使用std::shared_ptr<Images>
struct Images {
std::vector< std::shared_ptr<byte[]> > ptr_vector;
};
std::shared_ptr<Images> images1, images2;
这也将避免复制大型数据集。
您的建议是:
复制ptr_vector
; 您将获得一个可以独立于原始向量进行更改的新向量。
将ptr_vector
包装在另一个共享指针中并复制它; 您将获得原始向量的别名。
如果要创建别名,请选择选项2。如果要创建副本,请选择选项1。
找出您想要的,然后执行-快速执行错误的操作效率不高。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.