![](/img/trans.png)
[英]C++ - shared_ptr<vector<T>> vs. vector<shared_ptr<T>>
[英]vector<A> vs vector<A*> vs vector<shared_ptr<A> > in C++
我有一个class A
,它既不能复制构造也不能分配。 现在,我希望另一个class B
保存A
对象的向量。 同样很清楚, B
拥有这些对象的所有权。
如我所见,(至少)有三个选择:
vector<A>
vector<A*>
vector<shared_ptr<A> >
1.由于A
不可复制构造/分配而无法工作,这是正确的吗?
我不喜欢2.,因为我必须确保再次删除指针。
如果我使用3,我感觉这并不能清楚地表示B
是A
对象的所有者。 同样,我遇到了一个问题,如果我希望B
用户从此向量中删除指针,他们需要通过shared_ptr<A>
传递要删除的元素,对吗?
在这种情况下,什么是干净的设计决定? 有什么好的参考资料吗?
std::vector
一起使用时, A
必须具有可复制赋值和可复制构造性 ,但是从C ++ 11开始,这很大程度上取决于您需要在向量上使用的操作。 unique_ptr
? 关于该选项有一篇不错的博客文章 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.