![](/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.