vector::swap()回收内存方法
最近写代码遇到了一段代码,简化如下:
typedef vector<int> myVector;
myVector t{
1,2,3,4,4};
myVector().swap(t); //这行当时没看懂
产生了以下几个疑问:
- 为什么用一个空vector去与t交换?
- 交换之后t是不是变成空?
- 为什么不直接用vector::clear()?
通过上网查找,发现这是一种内存回收方法,因为vector::clear()只是把容器内容删除,但是空间并没有释放,并且vector::size()查看的是容器中元素的个数,而vector::capacity()函数可以查看容器占用内存,测试代码如下:
#include <iostream>