#include <iostream> #include <vector> using namespace std; int main() { vector<int>myvector; cout << "1、當前 myvector 擁有 " << myvector.size() << " 個元素,容量為 " << myvector.capacity() << endl; //利用 myvector 容器儲存 10 個元素 for (int i = 1; i <= 10; i++) { myvector.push_back(i); } cout << "2、當前 myvector 擁有 " << myvector.size() << " 個元素,容量為 " << myvector.capacity() << endl; //手動為 myvector 擴容 myvector.reserve(1000); cout << "3、當前 myvector 擁有 " << myvector.size() << " 個元素,容量為 " << myvector.capacity() << endl; return 0; }程式執行結果為:
1、當前 myvector 擁有 0 個元素,容量為 0
2、當前 myvector 擁有 10 個元素,容量為 13
3、當前 myvector 擁有 10 個元素,容量為 1000
myvector.erase(myvector.begin()); cout << "4、當前 myvector 擁有 " << myvector.size() << " 個元素,容量為 " << myvector.capacity() << endl; myvector.pop_back(); cout << "5、當前 myvector 擁有 " << myvector.size() << " 個元素,容量為 " << myvector.capacity() << endl; myvector.clear(); cout << "6、當前 myvector 擁有 " << myvector.size() << " 個元素,容量為 " << myvector.capacity() << endl;此段程式碼的執行結果為:
4、當前 myvector 擁有 9 個元素,容量為 1000
5、當前 myvector 擁有 8 個元素,容量為 1000
6、當前 myvector 擁有 0 個元素,容量為 1000
myvector.shrink_to_fit(); cout << "7、當前 myvector 擁有 " << myvector.size() << " 個元素,容量為 " << myvector.capacity() << endl;該語句的執行結果為:
7、當前 myvector 擁有 10 個元素,容量為 10
顯然,myvector 容器的容量由 1000 縮減到了 10。vector<T>(x).swap(x);
其中,x 指當前要操作的容器,T 為該容器儲存元素的型別。#include <iostream> #include <vector> using namespace std; int main() { vector<int>myvector; //手動為 myvector 擴容 myvector.reserve(1000); cout << "1、當前 myvector 擁有 " << myvector.size() << " 個元素,容量為 " << myvector.capacity() << endl; //利用 myvector 容器儲存 10 個元素 for (int i = 1; i <= 10; i++) { myvector.push_back(i); } //將 myvector 容量縮減至 10 vector<int>(myvector).swap(myvector); cout << "2、當前 myvector 擁有 " << myvector.size() << " 個元素,容量為 " << myvector.capacity() << endl; return 0; }程式執行結果為:
1、當前 myvector 擁有 0 個元素,容量為 1000
2、當前 myvector 擁有 10 個元素,容量為 10
注意,vector 模板類中的拷貝建構函式只會為拷貝的元素分配儲存空間。換句話說,tempvector 臨時容器中沒有空閒的儲存空間,其容量等於儲存元素的個數。
vector<T>().swap(x);
其中,x 指當前要操作的容器,T 為該容器儲存元素的型別。#include <iostream> #include <vector> using namespace std; int main() { vector<int>myvector; //手動為 myvector 擴容 myvector.reserve(1000); cout << "1、當前 myvector 擁有 " << myvector.size() << " 個元素,容量為 " << myvector.capacity() << endl; //利用 myvector 容器儲存 10 個元素 for (int i = 1; i <= 10; i++) { myvector.push_back(i); } //清空 myvector 容器 vector<int>().swap(myvector); cout << "2、當前 myvector 擁有 " << myvector.size() << " 個元素,容量為 " << myvector.capacity() << endl; return 0; }程式執行結果為:
1、當前 myvector 擁有 0 個元素,容量為 1000
2、當前 myvector 擁有 0 個元素,容量為 0