C++ 使用标准容器的std::unique_ptr
当我意识到C++11添加了C++ 使用标准容器的std::unique_ptr,c++,pointers,c++11,unique-ptr,C++,Pointers,C++11,Unique Ptr,当我意识到C++11添加了unique\u ptrs时,我一直在寻找一种实现安全向量和动态指针映射的方法。我研究了如何在谷歌上使用它们,但在寻找细节方面一直没有成功。我需要知道的是: 指针和unique\ptrs之间除了自动内存收集之外,还有什么不同之处 如何从矢量或地图中删除唯一的\u ptr?除了删除迭代器,还有什么特殊的代码需要我使用吗 没什么。unique_ptr只是指针的包装,当unique_ptr被销毁时,它会删除指针。它没有开销(就像它替换的auto_ptr模板一样) 不,它会起作
unique\u ptr
s时,我一直在寻找一种实现安全向量和动态指针映射的方法。我研究了如何在谷歌上使用它们,但在寻找细节方面一直没有成功。我需要知道的是:
unique\ptr
s之间除了自动内存收集之外,还有什么不同之处李>
唯一的\u ptr
?除了删除迭代器,还有什么特殊的代码需要我使用吗unique_ptr
只是指针的包装,当unique_ptr
被销毁时,它会删除指针。它没有开销(就像它替换的auto_ptr
模板一样)unique\u ptr
移动到容器中谢谢我不太确定,在谷歌上也找不到太多,所以我很高兴得到一个答案。+1是一个很好的解释,不过你可能想注意,最多一个唯一的\u ptr可以指向一个资源,而无限多的原始指针可以指向一个特定的资源。+1,可能添加了一个插入示例(特别是说明为什么需要移动)会有帮助。唯一性是一个必要条件吗?如果安全是你的目的,std::shared_ptr可能是一个替代方案。+1代表2。-当你关注它时很明显,但在从原始指针过渡到智能指针时可能是一个问题,如果你只走了“一半”原始指针指向已释放的内存,因为某个项已被删除