Предыдущая позиция итератора в C++
Для bidirectional и random-access итераторов есть движение назад.
Функция prev из iterator возвращает
позицию на заданное число шагов назад, а
переданный итератор не меняется.
Запишем вектор, поставим итератор на третий элемент, возьмем предыдущую позицию и выведем оба значения:
std::vector<int> v = {1, 2, 3, 4};
auto it = v.begin() + 2;
auto before = std::prev(it);
std::cout << *before << " " << *it << "\n";
На экране 2 и 3. Переменная
it осталась на третьем элементе.
Обратный обход часто комбинируют rbegin
с пошаговым prev от конца диапазона.
Поставьте итератор на последний элемент непустого вектора целых. Получите позицию перед ним, не меняя итератор на конце, и выведите значение там.