vector<int> arr(n);
Поскольку вы утверждаете, что n = 5
, эта строка кода создает arr = {0, 0, 0, 0, 0}
Но затем вы запускаете al oop 5 раз и добавляете еще 5 элементов к вашему вектору через push_back
:
for(i=0;i<n;i++){
cin >> a;
arr.push_back(a); // <-- mistake
}
И затем вы печатаете первые 5 элементов (которые равны 0) через
for(i=0;i<n;i++){
cout << arr[i] << " ";
}
Поэтому ваш вывод 0 0 0 0 0
.
Решение:
Вы должны добавить эти элементы в пространство, которое вы уже зарезервировали для своего вектора:
Заменить arr.push_back(a);
с arr[i] = a;
В стороне:
Итак, я делал этот вопрос о векторе, где мне нужно было принять входные данные, а затем повернуть все элементы обратно
sort(arr.begin(),arr.end());
не поможет вам выполнить эту задачу.
Вам следует использовать std::reverse
:
reverse(arr.begin(), arr.end());