如果使用vector的resize()之前其大小(size()==0)为0,则resize()会给每个初始化;如果之前大小不为0,则之前部分的值不变,后面扩充的空间的值会初始化。所以,如果第二种情况下希望也能全部初始化,则可以先clear(),然后在resize()。
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<int> a;
for(int i = 0; i < 10; i++){
a.emplace_back(9);
}
a.resize(20);
cout << "-----1-----" << endl;
for(auto v : a){
cout << v << " ";
}
a.clear();
cout << "\n-----2-----" << endl;
cout << a.size() << endl;
for(auto v : a){
cout << v << " ";
}
a.resize(20);
cout << "-----3-----" << endl;
for(auto v : a){
cout << v << " ";
}
cout << endl;
return 0;
}
结果:
-----1-----
9 9 9 9 9 9 9 9 9 9 0 0 0 0 0 0 0 0 0 0
-----2-----
0
-----3-----
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0