我的数据结构看起来像
template < class T1, class T2 > struct sometype
{
std::vector < T1 > v1;
std::vector < T2 > v2;
T1 deriv[10];
};
我创建了一个数据结构向量
std::vector <sometype <T1, T2>> somevec;
我怀疑是否这样做
somevec.erase(somevec.begin(), somevec.end());
std::vector <sometype <T1, T2>>().swap (somevec);
我可以收回记忆吗?
答案 0 :(得分:3)
你可以做得更好:
somevec.erase(somevec.begin(), somevec.end());
std::vector <sometype <T1, T2>>().swap (somevec);
您需要做的就是:
std::vector <sometype<T1, T2>>().swap(somevec);
这是因为您创建了一个空的临时文件。然后将空内容与somevec
的实际数据交换。然后销毁临时文件并回收用变量分配的内存(因为内存已交换到临时内存中)。
这被称为“Shrink to Fit Idiom”