Vector <int>输入和输出

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)

我将很感激对该问题内部运作的简要解释.

sbi*_*sbi 5

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)