HoK*_*y22 0 c++ initialization vector
vector<int> v;
v.push_back(0); //you have to do this
//v[0] = 0; //this gives you an error
v[0] = 1000000; //but now you can set it
Run Code Online (Sandbox Code Playgroud)
那么,为什么第一次初始化一个向量时,你需要push_back,之后你可以设置它吗?对于基本类型,比如int,你可以做int i = 0; 用于初始化.
如果事先知道向量的大小,最后不要使用普通的push_back()序列,因为如果向量很大(比如> 512个元素),重新分配可能会浪费时间.
更好:
vector<int> v;
v.reserve(N); // N is the expected size, but right now [0] is undefined.
for (...) {
v.push_back(...); // No problems in adding more than N elements, but may have to reallocate.
}
Run Code Online (Sandbox Code Playgroud)
vector<int> v;
v.resize(N);
for (size_t i=0;i<N;i++)
v[i] = ...; // You can't write past N-1 here!
Run Code Online (Sandbox Code Playgroud)
vector<int> v(N);
for (size_t i=0;i<N;i++)
v[i] = ...; // You can't write past N-1 here!
Run Code Online (Sandbox Code Playgroud)
vector<int> v(N,val); // v[0:N-1] are all equal to val
Run Code Online (Sandbox Code Playgroud)