c++ - Unique_ptr 容器或 unique_ptr 元素

标签 c++ c++11 smart-pointers unique-ptr

unique_ptr<list<Struct>> 之间有什么区别?和一个 list<unique_ptr<Struct>> ?威尔list<unique_ptr<Struct>>导致元素的内存也被自动管理?

最佳答案

unique_ptr<>就像在说 *但具有自动删除的额外好处。

unique_ptr<list<Struct>>之间的区别和 list<unique_ptr<Struct>>list<Struct>*之间的区别完全相同和 list<Struct*> .也就是说,one 是指向 list 的指针。的 Struct , 另一个是 list指向 Struct 的指针.这是一个相当明显的主要区别。

list type 管理它自己的内容,因为它为列表节点分配内存,这些节点保存你放在 <> 中的内容。 .所以 list<Struct> 中的一个节点直接持有一个Struct对象。但是 list<Struct*> 中的一个节点仅包含指向该结构的指针。

通过逻辑扩展,list<unique_ptr<Struct>> 中的节点拿着unique_ptr<Struct> ,它指向一个已经单独分配的结构。相反,一个 unique_ptr<list<Struct>>是指向 list 的指针谁的节点是直接持有的Struct

管理list的内容不,并且 不能 由包装它的指针处理。这是执行管理的混淆:list管理其内容 - 一个列表 - 直接,unique_ptr直接管理它的内容——一个原始指针——没有别的。

关于c++ - Unique_ptr 容器或 unique_ptr 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28687428/

相关文章:

c++ - 如何在 lambda 表达式中捕获单个类数据成员?

c++ - C++ 中多个值的多线程原子存储/加载

c++ - 如何减少大量包装类的实现代码?

c++ - 如何使用 unique_ptr 进行迭代?

c++ - 如何检查 lldb 是否可以附加到二进制文件?

C++ 访问编号变量

c++ - 检查 C++11 库功能

C++ 非静态成员引用必须相对于特定对象

c++ - 如何使用 SDL 游戏在 C++ 中获取随机值

c++ - 使用weak_ptr的观察者模式