7

当我意识到 C++11 添加了unique_ptrs. 我研究了如何在 Google 上使用它们,但未能找到详细信息。我需要知道的是:

  1. unique_ptr除了自动内存收集之外 ,指针和 s 之间究竟有什么不同?
  2. 我将如何unique_ptr从矢量或地图中删除 a ?除了擦除迭代器之外,我还必须使用任何特殊代码吗?
4

2 回答 2

13
  1. 没有。Aunique_ptr只是一个指针的包装器,它在unique_ptr销毁时删除指针。它没有开销(就像auto_ptr它替换的模板一样)。
  2. 不——它会起作用的。困难实际上来自指针插入向量或映射 - 而您必须将指针移动unique_ptr容器中。
于 2011-01-09T03:09:33.017 回答
4
  1. 不同之处在于 unique_ptr 遵循移动语义。此外,顾名思义,您不能复制它。

  2. 擦除 的元素std::vector<std::unique_ptr<T> >将有效地删除该指针指向的任何内容。

于 2011-01-09T03:13:51.290 回答