首先必須弄清楚兩個概念:
1.capacity
指容器在分配新的儲存空間之前能儲存的元素總數。
2. size
指當前容器所儲存的元素個數
在弄清這兩個概念以後,很容易懂resize和reserve的區別
1).reserve表示容器預留空間,但並不是真正的建立物件,需要通過insert()或push_back()等建立物件。
resize既分配了空間,也建立了物件。
2).reserve只修改capacity大小,不修改size大小,resize既修改capacity大小,也修改size大小。
#include
#include
using namespace std;
int main(int argc, char *argv)
{
vector wgw;
cout << "initilize size is: " << wgw.size() << endl;
cout << "initilize capacity is :" << wgw.capacity()
wgw1.resize(200);
cout << "wgw1 size is :" << wgw1.size()<
3).兩者的形參個數不一樣。
resize帶兩個引數,乙個表示容器大小,乙個表示初始值(預設為0)
reserve只帶乙個引數,表示容器預留的大小。
vector類的resize和reserve方法
vector 的reserve增加了vector的capacity,但是它的size沒有改變!而resize改變了vector的capacity同時也增加了它的size!原因如下 reserve是容器預留空間,但在空間內不真正建立元素物件,所以在沒有新增新的物件之前,不能引用容器內的元素。加入新的元...
STL中resize 與reserve 的區別
首先了解2個概念 size指容器當前擁有的元素個數,capacity則指容器在必須分配新儲存空間之前可以儲存的元素總數,即預分配儲存空間的大小。vector的存放有3種 1.普通 vecotrv1 for int i 0 i 100 i 效率最低。每push back乙個新元素,size就會 1,當...
HashMap中的resize問題
在jdk1.8中,hashmap的resize 函式做了相應的調整,尤其是對於在buckets的鍊錶中,官方給出的該resize 函式主要在兩種情況下使用 初始化的時候 將雜湊表擴容成之前的兩倍時 下面首先看初始化時,實際的resize 函式做了哪些工作 final node resize node...