當我意識到C++ 11增加了unique_ptr
s時,我一直在尋找一種方法來做安全向量和動態指針映射。我研究瞭如何在Google上使用它們,但在查找細節方面一直沒有成功。我需要知道以下內容:在標準容器中使用std :: unique_ptr
- 除了自動內存收集之外,指針和
unique_ptr
之間究竟有什麼不同? - 我該如何去除矢量或地圖中的
unique_ptr
?除了擦除迭代器之外,還有什麼特殊的代碼需要使用嗎?
當我意識到C++ 11增加了unique_ptr
s時,我一直在尋找一種方法來做安全向量和動態指針映射。我研究瞭如何在Google上使用它們,但在查找細節方面一直沒有成功。我需要知道以下內容:在標準容器中使用std :: unique_ptr
unique_ptr
之間究竟有什麼不同?unique_ptr
?除了擦除迭代器之外,還有什麼特殊的代碼需要使用嗎?unique_ptr
只是一個指針的包裝,它在銷燬unique_ptr
時刪除指針。它沒有開銷(就像它替換的auto_ptr
模板一樣)。unique_ptr
進入容器。謝謝!我不太確定,並且在Google上找不到太多內容,所以我很高興得到答案。 – OniLink 2011-01-09 03:13:48
+1有一個很好的解釋,儘管你可能想要指出,最多隻有一個unique_ptr可以指向一個資源,而無限大量的原始指針可以指向一個特定的資源。 – templatetypedef 2011-01-09 04:25:04
不同的是,服從的unique_ptr移動語義。此外,顧名思義,你不能複製它。
刪除std::vector<std::unique_ptr<T> >
的元素將有效地刪除指針指向的內容。
是unique_ptr的基本條件嗎? 如果安全是你的目的,std :: shared_ptr可能是一個選擇。 – 2011-01-09 12:27:26