下例中 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分配了內存,並沒有對其進行初始化。