2016-02-13 81 views
0

学习智能指针并偶然发现这个问题:我如何创建一个带有自动删除对象的向量?下面是我目前如何使用它的片段,这是确保我不需要在任何地方调用删除的正确方法吗?带智能指针的C++智能矢量?

unique_ptr<vector<unique_ptr<OBJ>>> list(new vector<unique_ptr<OBJ>>); 
+1

不能使用'auto_ptr',但'unique_ptr'是好的,如果你的编译器提供它。您需要移动语义才能获得正确的行为。 –

+0

@CodeGray没有抱怨从编译器,所以我认为它的工作,那么,为什么不auto_ptr工作? –

+1

'auto_ptr'具有相当不寻常的语义,例如复制它实际上转移所有权而不是复制。相关阅读:http://stackoverflow.com/questions/4577838/smart-pointers-in-container-like-stdvector,http://stackoverflow.com/questions/2876641/so-can-unique-ptr-be-used -safely-in-stl-collections –

回答

1

H.Guijt指出冗余上呼吁载体本身新的,下面的代码应该足够了:

vector<unique_ptr<Entry>> list;