【发布时间】:2017-05-24 12:46:46
【问题描述】:
我有:
vector< pair<vector<int> , int> > mapped_samples;
这是非常大的。我会手动释放内存。我知道一个简单向量的技巧是:
vector<int> simple_vector;
vector<int>().swap(simple_vector);
在我的情况下没关系:
vector<pair<vector<int> , int>>().swap(mapped_samples);
还是需要做一些嵌套操作?
(我使用的是 C++11)
【问题讨论】:
-
是什么让您认为需要进行嵌套交换? (包含向量在销毁时销毁它的子向量)
-
“释放”向量内存的正确方法是什么都不做
-
您能否扩展“我将手动释放内存。”,因为我觉得这是您的实际问题所在
-
@Umbert:嵌套的
vectors 在你clear时被破坏。从技术上讲,顶级vector可能会在clear之后保留空间来保存项目,但其内容必须被标准破坏。再往前走,您最多只能恢复为顶级vector保留的空间(保留以防新东西被推到它上面)。 -
你看
std::vector::shrink_to_fit./
标签: c++ c++11 memory-management