如果vector是空的,并且没有分配空间,切忌用下标进行访问,会出错!!!
int main()
{
vector<int>v;
v[0]=1;
return 0;
}
成功编译,但是运行的时候报错Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
。因此,当vector为空的时候,一定要用push_back()添加值。
但是,如果在定义动态数组v之后,经过了resize 或reserve之后,就可以通过下标访问
vector<int>v;
// v.resize(5); //也可以
v.reserve(5);
v[0]=1;
- resize的时候会给vector里面填充0,而reserve不会
vector<int> v1;
v1.reserve(5);
for(int i=0;i<v1.size();i++)
{
cout<<v1[i]<<" ";
}
cout<<endl;
vector<int> v2;
v2.resize(5);
for(int i=0;i<v2.size();i++)
{
cout<<v2[i]<<" ";
}
运行结果: