Ошибка vector subscript out of range
Вообщем, я занимаюсь по книге Страуструпа и у меня не получается сделать довольно простое задание.
- Напишите две функции, обращающие порядок следования элементов в объекте типа vector. Например, вектор 1 , 3, 5, 7, 9 становится вектором 9, 7, 5, 3, 1 . Первая функция, изменяющая порядок следования элементов на противоположный, должна создавать новый объект класса vector, а исходный объект класса vector должен оставаться неизменным . Другая функция должна изменять порядок следования элементов в передаваемом ей векторе без использования других векторов. Указан11е: воспользуйтесь функцией swap.
#include <iostream>
#include <vector>
//создает новый вектор new vector swap
std::vector<int> nv_swap(std::vector<int>& nv, const std::vector<int> ov)
{
nv.reserve(ov.size());
int j = ov.size();
for (int i : ov)
{
nv[j] = i;
--j;
}
return nv;
}
//преобразует старый вектор old vector swap
void ov_swap(std::vector<int>& v)
{
}
int main()
{
const std::vector<int> ov{ 1 , 3, 5, 7, 9 };
std::vector<int> nv;
nv_swap(nv, ov);
/*std::cout << nv[1];*/
}
Источник: Stack Overflow на русском