Philippe Mori
Ваша программа не определена, потому что вы получаете доступ к несуществующим элементам.
В частности, следующая строка имеет неопределенное поведение, поскольку элемент с индексом 4 еще не существует.
S[4]=99;
Таким образом, вам следует ознакомиться с документацией: vector:: operator [] - ссылка на C++ [
^]
вектор:: оператор[
^]
На самом деле, как раз перед тем, как эта строка будет выполнена, у вас есть 3 элемента с индексом 0, 1 и 2.
Учитывая это, следующая строка также неверна, поскольку вы пытаетесь отобразить элементы с индексами 3 и 4. Таким образом, вы должны позвонить
push_back
дважды, чтобы добавить эти элементы.
S.push_back(0); // Whatever you want at index 3...
S.push_back(99); // Instead of S[4] = 99;
Кстати, я бы рекомендовал вам добавить немного пробелов (и отступов) для удобства чтения. Вот несколько примеров из вашего кода, которые более читабельны с некоторыми дополнительными пробелами:
vector<int> S;
//...
S[4] = 99;
cout << '|' << S.at(0) << '|' << S.at(1) << '|' << S.at(2) << '|' << S.at(3) << '|' << S.at(4) << '|';
cout << endl << S.size();
return 0;