Проблема в этой строке:
cout<<"write at position"<<trial.at(i)<<'t';
Вы вызываете это до того, как задаете размер вектора.Я не совсем уверен, что эта линия пытается выполнить в любом случае.Если вы пытаетесь распечатать позицию в памяти (адрес), которая не будет этого делать, если вы пытаетесь напечатать то, что уже было там, это сработает, если оно уже было выделено.Использование vector::push_back()
означает, что вам не нужно предварительно выделять.
Вы можете исправить это, изменив размер vector
и получив прямой доступ к элементам следующим образом:
trial.resize(size);
// loop
// vector.push_back(x) -- now becomes
vector[i] = x;
Или,Вы можете просто удалить печать позиции и использовать push_back()
, как вы сейчас.
Поскольку кажется, что вы исследуете, как использовать vector
, я бы предложил попытаться понять, как *Методы 1015 * и resize()
отличаются друг от друга и также смотрят на функцию vector::reserve()
.