我被简单的 vector 输入和输出操作困住了。编译器返回错误提示“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);
}
如果能简要解释问题的内部工作原理,我将不胜感激。
最佳答案
您在 trial.push_back(x)
之前调用 trial.at(i)
,访问一个尚不存在的元素。由于该元素(还)不存在,i
是无效索引,at()
将抛出 std::out_of_range
异常传递无效索引时。如果未捕获到异常,它将终止程序。据推测,您平台的运行时库显示了导致程序终止的异常。
我想你真正想要的是:
std::cout << "write at position " << i << '\t';
关于c++ - vector <int> 输入和输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9556295/