Используйте std::reverse на диапазоне вектора. Функция меняет элементы на месте, ничего не возвращает и корректно обрабатывает пустой вектор.
Функция, меняющая порядок элементов вектора
Используйте std::reverse на диапазоне вектора. Функция меняет элементы на месте, ничего не возвращает и корректно обрабатывает пустой вектор.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Требуется реализовать функцию, которая получает неконстантную ссылку на std::vector, изменяет её содержимое так, чтобы элементы оказались в обратном порядке, и не возвращает никакого значения.
Пример сигнатуры:
void reverseVector(std::vector<int>& vec);
Ответ
Используйте std::reverse на диапазоне вектора. Функция меняет элементы на месте, ничего не возвращает и корректно обрабатывает пустой вектор.
#include <algorithm>
#include <vector>
void reverseVector(std::vector<int>& vec) {
std::reverse(vec.begin(), vec.end());
}
Алгоритм меняет местами первый элемент с последним, второй с предпоследним и так далее. Время O(n), дополнительная память O(1). Размер и ёмкость вектора не меняются; неконстантная ссылка нужна, чтобы изменение получил вызывающий код, а не локальная копия.