Alt*_*Ego 0 c++ stl vector cin
我陷入了简单的矢量输入和输出操作.编译器返回错误'std :: outof range'
这是代码
int main()
{
int size;
cout <<"Enter size of vector\n";
cin>>size;
cout<<"Now to input the vector of size "<<size<<endl;
vector <int> trial;
for (size_t i=0;i<size;++i){
int x;
cout<<"write at position"<<trial.at(i)<<'t';
cin>>x;
trial.push_back(x);
cout<<endl;
}
ostream_iterator<int> output(cout,"");
copy(trial.begin(),trial.end(),output);
}
Run Code Online (Sandbox Code Playgroud)
我将很感激对该问题内部运作的简要解释.
您trial.at(i)之前调用trial.push_back(x),访问尚未存在的元素.由于元素(尚未)存在,因此i是无效索引,并在传递无效索引时at()抛出std::out_of_range异常.如果未捕获异常,它将终止该程序.据推测,您的平台的运行时库会显示导致程序终止的异常.
我想你真正想要的是这个:
std::cout << "write at position " << i << '\t';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2880 次 |
| 最近记录: |