簡體   English   中英

矢量<A>vs矢量</a> <A*> <A>vs矢量</a> <shared_ptr<A> <A>&gt;在C ++中</a>

[英]vector<A> vs vector<A*> vs vector<shared_ptr<A> > in C++

我有一個class A ,它既不能復制構造也不能分配。 現在,我希望另一個class B保存A對象的向量。 同樣很清楚, B擁有這些對象的所有權。

如我所見,(至少)有三個選擇:

  1. 使用vector<A>
  2. 使用vector<A*>
  3. 使用vector<shared_ptr<A> >

1.由於A不可復制構造/分配而無法工作,這是正確的嗎?

我不喜歡2.,因為我必須確保再次刪除指針。

如果我使用3,我感覺這並不能清楚地表示BA對象的所有者。 同樣,我遇到了一個問題,如果我希望B用戶從此向量中刪除指針,他們需要通過shared_ptr<A>傳遞要刪除的元素,對嗎?

在這種情況下,什么是干凈的設計決定? 有什么好的參考資料嗎?

  1. 正確; std::vector一起使用時, A必須具有可復制賦值和可復制構造性 ,但是從C ++ 11開始,這很大程度上取決於您需要在向量上使用的操作。
  2. 我同意,除非我有非常令人信服的理由(我認為這不是一個理由),否則我將不再使用原始指針。
  3. 您是否考慮過unique_ptr 關於該選項有一篇不錯的博客文章

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM