容器的resize()和reserve()用法

下例中  vector<int> vec;

vec.resere(10);

fill_n(vec.begin(),10,0)  

是否有錯呢?

表面上看,對容器vec設置了內存,好像可以滿足fill_n的使用條件。但是,reserve只是分配內存而沒有對vec進行初始化。故,錯。

改正爲:

 vector<int> vec;

vec.resize(10);

fill_n(vec.begin(),10,0)  

t.resize(n),若t的長度大於n,則將其截短至n;若t長度小於n,則用初始化值將長度補到n,故可以滿足fill_n的容器必須初始化的要求。t.resize(n,m)則將新添加的元素初始化爲值m。而對於t.reserve(n),則只是爲t分配了內存,並沒有對其進行初始化。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章