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.