本文研究一下不用push_back,而直接用索引[]来对vector进行写操作。
测试1
#include <iostream>
#include<vector>
using namespace std;
int main() {
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
vector<int>v;
//v.resize(5);
v[0]=1;
v[1] = 5;
//v.resize(3);
cout<<"size:"<<v.size()<<endl;
for(unsigned int i=0;i<v.size();i++)
{
cout<<v[i]<<endl;
}
return 0;
}
运行结果
!!!Hello World!!!
发现变量v里面压根就没有元素,连size也不是0.
修改代码,再次运行
#include <iostream>
#include<vector>
using namespace std;
int main() {
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
vector<int>v;
v.resize(5);
v[0]=1;
v[1] = 5;
v.resize(3);
cout<<"size:"<<v.size()<<endl;
for(unsigned int i=0;i<v.size();i++)
{
cout<<v[i]<<endl;
}
return 0;
}
这样才可以。
结论:
使用索引[]操作符对vecor操作,不会自动申请内存空间。因此要手动用resize函数来申请空间。申请后,每个元素默认为0。