营销推广型网站价格,河南网站建设的详细策划,如果做网站运营,专门做文创产品的网站vector容器互换 功能描述#xff1a; 实现两个容器内元素进行互换
函数原型#xff1a; swap(vec);//将vec与本身的元素互换
1.基本使用 代码如下:
#include iostream
using namespace std;
//vector容器互换
#include vector
//1.基本使用void printVect…vector容器互换 功能描述 实现两个容器内元素进行互换
函数原型 swap(vec);//将vec与本身的元素互换
1.基本使用 代码如下:
#include iostream
using namespace std;
//vector容器互换
#include vector
//1.基本使用void printVector(vectorint v) {for (vectorint ::iterator it v.begin(); it ! v.end(); it) {cout *it ;}cout endl;
}void test01() {vectorint v1;for (int i 0; i 10; i) {v1.push_back(i);}cout 互换前 endl;printVector(v1);vectorint v2;for (int i 10; i 0; i--) {v2.push_back(i);}printVector(v2);v1.swap(v2);cout互换后endl;printVector(v1);printVector(v2);}int main() {test01();return 0;
}2.实际用途 巧用swap可以收缩内存空间 当我们重新指定大小的时候vector容器的容量(capacity)不会变化如果刚开始给vector容器push_back很多元素后面resize时又将它变得很小这个时候vector的size虽然变了但是capacity是不会变的这样就会浪费内存空间我们可以巧用swap解决这个问题 代码如下
#include iostream
using namespace std;
//vector容器互换
#include vector
//2.实际用途void printVector(vectorint v) {for (vectorint ::iterator it v.begin(); it ! v.end(); it) {cout *it ;}cout endl;
}void test01() {vectorint v;for (int i 0; i 100000; 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;//巧用swap收缩内存vectorint(v).swap(v);cout v的容量 v.capacity() endl;cout v的大小 v.size() endl;}int main() {test01();return 0;
}vector(v).swap(v); 为什么可以收缩空间呢
vector int (v) : 用v目前所用元素个数来初始化匿名对象
那当我们使用了swap(v)//容器交换后 等vector int (v).swap(v)这行代码执行完编译器就会自动回收匿名对象所以那块很大的内存就会被回收不再占用空间