1.功能:实现两个容器内的元素互换
2.函数原型:swap(vec): //将vec与本身的元素互换
#include<iostream>
#include<vector>
using namespace std;
void printvector(vector<int> &v)
{
for(vector<int>::iterator it=v.begin();it!=v.end();it++)
cout<<*it<<" ";
cout<<endl;
}
void test1()
{
cout<<"交换之前的两个容器:"<<endl;
vector<int> v1;
for(int i=0;i<10;i++)
v1.push_back(i);
printvector(v1);
vector<int> v2;
for(int i=9;i>=0;i--)
v2.push_back(i);
printvector(v2);
cout<<"交换之后的两个容器:"<<endl;
v1.swap(v2);
printvector(v1);
printvector(v2);
}
void test2() //容器互换应用实例
{
vector<int> v;
for(int i=0;i<10000;i++)
v.push_back(i);
cout<<"v的容量为:"<<v.capacity()<<" v的大小为: "<<v.size()<<endl;
v.resize(5); //重新指定大小之后,容量不变,大小改变
cout<<"v的容量为:"<<v.capacity()<<" v的大小为: "<<v.size()<<endl;
//利用swap收缩内存
vector<int>(v).swap(v); //vector<int>(v): 匿名对象
cout<<"v的容量为:"<<v.capacity()<<" v的大小为: "<<v.size()<<endl;
}
int main()
{
test1();
test2();
return 0;
}
/*
打印结果:
交换之前的两个容器:
0 1 2 3 4 5 6 7 8 9
9 8 7 6 5 4 3 2 1 0
交换之后的两个容器:
9 8 7 6 5 4 3 2 1 0
0 1 2 3 4 5 6 7 8 9
v的容量为:16384 v的大小为: 10000
v的容量为:16384 v的大小为: 5
v的容量为:5 v的大小为: 5
*/