簡體   English   中英

將std :: unique_ptr與標准容器一起使用

[英]Using std::unique_ptr with standard containers

當我意識到C ++ 11添加了unique_ptr時,我一直在尋找一種方法來做動態指針的安全向量和映射。 我研究了如何在Google上使用它們,但是在尋找細節方面卻沒有成功。 我需要知道的是以下內容:

  1. 除了自動內存收集之外,指針和unique_ptr之間究竟有什么不同?
  2. 我如何從矢量或地圖中刪除unique_ptr 除了擦除迭代器之外,還有什么特殊的代碼嗎?
  1. 沒有。 unique_ptr只是指針的包裝器,它在unique_ptr被銷毀時刪除指針。 它沒有開銷(就像它替換的auto_ptr模板一樣)。
  2. 不 - 它會起作用。 實際上很難指針插入向量或映射 - 而您必須 unique_ptr 移動到容器中。
  1. 不同之處在於unique_ptr遵循移動語義。 此外,顧名思義,您無法復制它。

  2. 擦除std::vector<std::unique_ptr<T> >的元素將有效刪除指針指向的任何內容。

暫無
暫無

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

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