c++容器函数swap的一个用法

今天在看一位老师的代码时,看到了下面的程序:

vector <int>().swap(chIndiv1.v_chromosome);
 vector <int>().swap(chIndiv2.v_chromosome);

很迷惑,因为之前知道swap是用来交换容量中的元素的,那么现在这里的swap用法是什么呢?抱着继续好好学习的态度,查找了一些资料后,发现原来swap还用两种用法,特此整理一下:

(1)用法1:释放内存

vector<double>v;

vector<double>().swap(v);   

 //也可以是v.swap(vector<double>());

(2)用法二:修整容器的空间

    vector<int>(vec).swap(vec); // 或者 ivec.swap(vector<int>(ivec));

想到这里,我记得还有一个clear函数是用来释放内存的,那么两者有什么区别呢?

https://blog.csdn.net/tpnndhqc/article/details/51074781

一文中提到,clear函数并不能完全保证内存回收,并不是所有的STL容器的clear成员函数的行为都和vector一样。 
事实上,其他容器的clear成员函数都会释放其内存。

猜你喜欢

转载自blog.csdn.net/qq_25018077/article/details/88252159