vector中的resize與reserve區別

2021-08-20 02:33:54 字數 736 閱讀 3816

首先必須弄清楚兩個概念:

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...