【发布时间】:2020-09-14 21:15:24
【问题描述】:
我有一个vector<vector<double>> elem,我想在我的程序中多次释放它的内存。
我尝试过使用
vector<vector<double>>().swap(elem);
甚至是for cicle
for(int i=0; i<elem.size();i++)
vector<double>().swap(elem[i]);
vector<vector<double>>().swap(elem);
elem.resize(dim, vector<double>(0));
(我希望第一个维度是某个数字dim)
但是当我打电话时
cout<<elem[0].size();
在我的程序中,即使我刚刚使用了上述方法,输出也不断增长。向量的“主要”大小不存在此问题。
即
cout<<elem.size();
总是输出dim
编辑:我知道 clear() 但我想释放向量,shrink_to_fit() 也不起作用。这也是在主函数之外的一个函数中实现的,如下所示:
void arrayReset(vector<vector<double>> elem) {
for(int i=0; i<elem.size();i++)
vector<double>().swap(elem[i]);
vector<vector<double>>().swap(elem);
elem.resize(dim, vector<double>(0));
}
【问题讨论】:
-
您是否要清除或替换这些向量?通常,如果您正确操作它们,则不需要释放或解除分配。这一切都是自动完成的。也许你只是想要
clear()? -
我想多次释放它的内存 那是非常低效的。您应该分配一次,然后根据需要重新使用存储。 vector 有一个
clear成员函数,可以帮助你。