//函数原型:swap(vec); //将vec与本身的元素互换
#include<iostream>
using namespace std;
#include<vector>
void printVector(vector<int>& v) {
for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
cout << *it << " ";
}
cout << endl;
}
void test01() {
vector<int>v1;
for (int i = 0; i < 10; i++) {
v1.push_back(i);
}
printVector(v1);
vector<int>v2;
for (int i = 10; i >0; i--) {
v2.push_back(i);
}
printVector(v2);
//互换容器
cout << "互换后" << endl;
v1.swap(v2);
printVector(v1);
printVector(v2);
}
void test02() {
vector<int>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); //尽管size变成了3,但capacity还是100000+
cout << "v的容量 = " << v.capacity() << endl;
cout << "v的容量 = " << v.size() << endl;
//收缩内存
vector<int>(v).swap(v); //匿名对象
//上一行由两个部分组成
//1.匿名对象x部分 vector<int>x
//2.交换函数部分:将匿名对象x与v进行交换
//首先,匿名对象x以v的内容为蓝本构造,此时s的size为3,capacity也为3,而v的size为3,capacity仍为100000+
//x遗留的交换v所得的100000+空间不需担心,匿名对象特性:该行执行完毕编译器自动释放内存
cout << "v的容量 = " << v.capacity() << endl;
cout << "v的容量 = " << v.size() << endl;
}
int main() {
test01();
test02();
}
C++笔记 STL vector容器_互换容器
最新推荐文章于 2023-04-25 21:46:49 发布