2016-02-13 77 views
0

學習智能指針並偶然發現這個問題:我如何創建一個帶有自動刪除對象的向量?下面是我目前如何使用它的片段,這是確保我不需要在任何地方調用刪除的正確方法嗎?帶智能指針的C++智能矢量?

unique_ptr<vector<unique_ptr<OBJ>>> list(new vector<unique_ptr<OBJ>>); 
+1

不能使用'auto_ptr',但'unique_ptr'是好的,如果你的編譯器提供它。您需要移動語義才能獲得正確的行爲。 –

+0

@CodeGray沒有抱怨從編譯器,所以我認爲它的工作,那麼,爲什麼不auto_ptr工作? –

+1

'auto_ptr'具有相當不尋常的語義,例如複製它實際上轉移所有權而不是複製。相關閱讀:http://stackoverflow.com/questions/4577838/smart-pointers-in-container-like-stdvector,http://stackoverflow.com/questions/2876641/so-can-unique-ptr-be-used -safely-in-stl-collections –

回答

1

H.Guijt指出冗餘上呼籲載體本身新的,下面的代碼應該足夠了:

vector<unique_ptr<Entry>> list;