在《effective STL》指明,用clear()无法保证内存回收。但是swap技法可以。具体方法如下所示:
1、释放内存:
vector<int> ivec;
vector<int>().swap(ivec); //或者 ivec.swap(vector<int>());
//vector<char *>().swap(file_list_);
2、修整空间
vector<int>(ivec).swap(ivec); // 或者 ivec.swap(vector<int>(ivec));
并不是所有的STL容器的clear成员函数的行为都和vector一样。
事实上,其他容器的clear成员函数都会释放其内存。