stl:容器中的swap不仅会交换两个容器之间的元素,也会交换容器的大小,可以用这种方法来解决容器中分配的内存远远大于了元素所需要的内存。
vector<int> v(100, 10);
cout << "befor:" << endl;
cout << "size()= " << v.size() << endl;
cout << "capacity=" << v.capacity() << endl;
v.erase(v.begin() + 10, v.end());
cout << "size()=" << v.size() << endl;
cout << "capacity=" << v.capacity() << endl;
cout << endl;
cout << "after:" << endl;
vector<int>v1(v);
**//这里注意一下vector的copy construct,是用allocate申请v.size()大小的对象空间,然后在调用每个元素的拷贝构造函数**
cout << "v1size()=" << v1.size() << endl;
cout << "v1capacity=" << v1.capacity() << endl;
v1.swap(v);
cout << "vsize()=" << v.size() << endl;
cout << "vcapacity=" << v.capacity() << endl;