容器的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分配了内存,并没有对其进行初始化。

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