Daily bit(e) C++. std::next, std::prev

Добавлено 27 октября 2026 в 04:25

Daily bit(e) C++ 160, вспомогательные функции для итераторов – std::next и std::prev.

Daily bit(e) C++

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

Пример на Compiler Explorer

Теги

C++ / CppDaily bit(e) C++Программирование