vector利用Swap函数实现收缩内存
一、这是我在学习黑马C++的时候遇到的,感觉挺有意思,就记录了下来
/*编译器:vs2010*/
#include "stdafx.h" #include <vector> #include <iostream> using namespace std; void printVector(vector<int>&v) { for(vector<int>::iterator it = v.begin(); it!=v.end();it++) { cout<<*it<<"\t"; } cout<<endl; } void SwapRon() {//收缩内存// vector<int>v; for(int i = 0;i<10000;i++) { v.push_back(i); } cout<<"v的容量为:"<<v.capacity()<<endl; cout<<"v的大小为:"<<v.size()<<endl; v.resize(3); cout<<"v的容量为:"<<v.capacity()<<endl; cout<<"v的大小为:"<<v.size()<<endl; vector<int>(v).swap(v); cout<<"v的容量为:"<<v.capacity()<<endl; cout<<"v的大小为:"<<v.size()<<endl; } int _tmain(int argc, _TCHAR* argv[]) { resverse(); getchar(); return 0; }
二、
我们利用 vector<int>(vector<int>)构造函数产生临时vector对象,这个临时对象的初始容量和大小相同,都是图中的3
再在这个临时对象基础上调用swap函数,执行swap函数后两个vector交换,临时对象指向容量大的那个vector,并且这个临时对象在执行完毕它那一行代码后会自动析构
内存释放出来,实现收缩内存的效果
参考:https://www.cnblogs.com/xiaobingqianrui/p/9092051.html