vector<int>().swap()

1、释放内存:
empty()是用来检测容器是否为空的,clear()可以清空所有元素。但是即使clear(),所占用的内存空间依然如故。如果你需要空间动态缩小,可以考虑使用deque。如果非要用vector,有一个办法,就是使用swap:

在《effective STL》和其实很多C++文章中都有指明,用clear()无法保证内存回收。但是swap技法可以。具体方法如下所示:

vector<int> ivec;
ivec.push_back(1);ivec.push_back(1);ivec.push_back(2);ivec.push_back(2);
vector<int>().swap(ivec); //或者ivec.swap(vector<int>());

vector<int>().swap(ivec); 或者如下所示 加一对大括号都可以,意思一样的:
{
 std::vector<int> tmp;   
 ivec.swap(tmp);
}     
加一对大括号是可以让tmp退出{}的时候自动析构

猜你喜欢

转载自blog.csdn.net/weixin_39373577/article/details/118895423
今日推荐