如何使用unique_ptr自动管理vector <vector <int >>的内存

Cap*_*row 1 c++ unique-ptr

我在c ++函数中使用向量向量.

    vector<vector<int>> foo
Run Code Online (Sandbox Code Playgroud)

当这个对象超出范围时,我想自动释放内存.为了做到这一点,我使用以下代码:

    unique_ptr<vector<unique_ptr<vector<int>>> foo(new vector<unique_ptr<vector<int>>())
Run Code Online (Sandbox Code Playgroud)

这听起来是对的还是我不必要的复杂化?

PS:如果不使用unique_ptr我想在堆上分配向量.那是

    vector<vector<int>>* foo = new vector<vector<int>>();
Run Code Online (Sandbox Code Playgroud)

所以我认为当foo超出范围时我必须手动清理东西?

Sha*_*ger 5

你太复杂了.vectors已经自我清理了(析取函数将在vector超出范围时被调用到顶层,它会vector自动为每个包含的s 调用它),这只会引入额外的间接和分配器开销.