释放容器内存的三种方式

首先明确容器中的 size( ) 函数是用来返回当前容器中的元素的个数;而 capacity( ) 函数则是用来返回容器内存空间即缓冲区的大小;
1.方法一:直接声明同一个匿名容器类型与原有容器交换,匿名容器会自动销毁;vector( ).swap(num);

2.方法二:先声明一个临时对象,然后与目标容器交换数据:vectortemp; (temp).swap(num); 临时对象未被初始化,其缓冲区大小为0,没有数据,与目标对象交换数据,则容器num中的缓冲区就没有了;
注意:不要写成这种形式,vector(temp).swap(num); 因为这个temp容器之前并没有定义;编译器会报错

3.方法三:先将目标容器的内存清空,再利用swap函数与原有容器进行交换,即:num.clear( ); vector(num).swap(num);
注意:单单使用clear( )函数不会清空内存,只是把容器中存储的数据清除掉;使用clear()函数后容器内的元素个数为0,即size()函数返回的结果为0;但是内存没有释放,即capacity()函数的返回结果不为0

下面附上上述三种方法的集中代码

#include 
#include 
using namespace std;
int main(){
	vevtor<int> num = {1,2,3};
	//清空容器内存的第一种方式
	vectort<int>( ).swap();

	//清空容器内存的第二种方式
	vector<int>temp;
	temp.swap(num);

	//清空容器内存的第三种方式
	num.clear();
	vector<int>(num).clear;

	//利用size()函数和capacity()函数来检测容器的元素个数和内存大小
	cout<<num.size()<<endl;
	cout<<num.capacity()<<endl;

return 0;
}

以上是作者本人在学习过程中做的一个小总结,如有不完善之处或者纰漏之处,欢迎批评指正!!!

你可能感兴趣的:(c++,c语言)