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/