我一直在寻找一种安全的方法来处理动态指针的向量和映射,当我意识到C++11添加了unique_ptr
时,我开始研究如何使用它们。我在Google上查找了如何使用它们的方法,但是没有找到详细信息。我需要知道以下内容:
- 除了自动内存收集之外,指针和
unique_ptr
之间有什么不同? - 如何从向量或映射中移除一个
unique_ptr
?除了擦除迭代器之外,是否需要使用任何特殊代码?
我一直在寻找一种安全的方法来处理动态指针的向量和映射,当我意识到C++11添加了unique_ptr
时,我开始研究如何使用它们。我在Google上查找了如何使用它们的方法,但是没有找到详细信息。我需要知道以下内容:
unique_ptr
之间有什么不同?unique_ptr
?除了擦除迭代器之外,是否需要使用任何特殊代码?unique_ptr
只是指针的一个包装器,当销毁unique_ptr
时会删除指针。它没有额外开销(就像被它取代的auto_ptr
模板一样)。unique_ptr
,必须移动指针进入容器。unique_ptr的区别在于它遵循移动语义。此外,顾名思义,您不能创建它的副本。
从std::vector<std::unique_ptr<T> >
中删除元素将有效地删除该指针所指向的任何内容。