繁体   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