1. resize的用法
改變當前容器內含有元素的數量(size())比如:
vector<int> vct;int num = vct.size();//之前的元素個數為num
vct.resize(len);//現在的元素個數為len
如果num < len ,那么容器vct新增len - num個元素,元素的值默認為0;
若再對vct進行插入,如:
vct.push_back(1);//此時將1插入到vct末尾,其下標就為len,容器的容量變為len +1
2. reserve的用法
改變當前容器的最大容量(capacity),不會生成元素,只是確認這個容器允許放入多少對象,如果reserve(len)的值大于當前的capacity(),那么會重新分配一塊能存len個元素的空間,然后把之前的vct.size()個元素通過copy construtor復制過來,銷毀之前的內存。
3. 代碼實現
#include<iostream>
#include<vector>
using namespace;int mian(){vector<int> vct;vct.reserve(100);vct.resize(50);cout << vct.size() << " " << vct.capacity() << endl;//50 100vct.reserve(150);cout << vct.size() << " " << vct.capacity() << endl;//50 150vct.resize(100);cout << vct.size() << " " << vct.capacity() << endl;//100 150vct.reserve(50);cout << vct.size() << " " << vct.capacity() << endl;//100 150return 0;
}
發現在進行了vct.reserve(150)之后,再將reserve()參數設置為比150小的,不發生變化,說明如果新的容量比原來的容量小,reserve()函數不會做任何事情。