Daily bit(e) C++ #160, Утилиты Iterator для получения следующего и предыдущего итераторов: std::next, std::prev.

std::next и std::prev — это утилиты итераторов C++11, которые возвращают следующий или предыдущий итератор.

Если предоставленный итератор моделирует произвольный доступ, операция будет постоянной, даже если указано пользовательское расстояние.

#include <vector>
#include <list>
#include <iterator>

std::vector<int> data{1, 2, 3, 4, 5, 6, 7};

// std::prev requires bidirectional iterator
auto it1 = std::prev(data.end());
// *it1 == 7

// distance can be customized
auto it2 = std::next(data.begin(), 3);
// *it2 == 4

std::list<int> lst{1, 2, 3, 4, 5, 6, 7};

// for non-random-access iterators the operation is linear
auto it3 = std::prev(lst.end(), 4);
// *it3 == 4

Откройте пример в Compiler Explorer.