Daily bit(e) C++. std::next, std::prev
Добавлено 27 октября 2026 в 04:25
Daily bit(e) C++ 160, вспомогательные функции для итераторов – 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 требует двунаправленный итератор
auto it1 = std::prev(data.end());
// *it1 == 7
// расстояние может быть настроено
auto it2 = std::next(data.begin(), 3);
// *it2 == 4
std::list<int> lst{1, 2, 3, 4, 5, 6, 7};
// для итераторов, не поддерживающих произвольный доступ,
// эта операция является линейной
auto it3 = std::prev(lst.end(), 4);
// *it3 == 4
