vector内存释放
作者:佚名 时间:2012-11-20
clear()可以清空所有元素。 但是即使clear(),所占用的内存空间依然如故。如果你需要空间动态缩小,可以考虑使用 deque。如果非要用vector,这里有一个办法:
在《effective STL》和其实很多C++文章中都有指明,用clear()无法保证内存回收。但是swap技法可以。具体方法如下所示:
vector<int> nums;
nums.push_back(1);nums.push_back(1);nums.push_back(2);nums.push_back(2);
vector<int>().swap(nums); //或者nums.swap(vector<int> ());
或者如下所示 加一对大括号都可以,意思一样的:
{
std::vector<int> tmp = nums;
nums.swap(tmp);
}
如没特殊注明,文章均为上海联楷网络原创,转载请注明来自:http://www.linksj.com/contact/20151229/n7367.html