Spec-Zone.ru › C++

std::ranges::subrange<I,S,K>::next

[[nodiscard]] constexpr subrange next(std::iter_difference_t<I> n = 1) const&
    requires std::forward_iterator<I>;
(1) (с C++20)
[[nodiscard]] constexpr subrange next(std::iter_difference_t<I> n = 1) &&;
(2) (с C++20)
1) Получает subrange с итератором, увеличенным на min(n, size()) раз или уменьшенным на -n раз по отношению к итератору *this, если n >= 0 или n < 0 соответственно. Эквивалентно auto tmp = *this; tmp.advance(n); return tmp;.
2) Увеличивает сохранённый итератор на min(n, size()) раз или уменьшает его на -n раз, если n >= 0 или n < 0 соответственно, а затем перемещающую конструкцию результата из *this. Эквивалентно advance(n); return std::move(*this);.

Поведение не определено, если:

  • I не моделирует двунаправленный итератор и n < 0, или
  • сохранённый итератор уменьшается после того, как становится недопустимым для уменьшения.

Параметр

n - количество максимальных увеличений итератора

Возвращаемое значение

subrange с итератором, увеличенным на min(n, size()) раз или уменьшенным на -n раз по отношению к исходному значению итератора *this, если n >= 0 или n < 0 соответственно.

Сложность

В общем случае min(n, size()) увеличений или -n уменьшений итератора, если n >= 0 или n < 0 соответственно.

Постоянная, если I моделирует случайный доступный итератор, и либо n < 0 либо std::sized_sentinel_for<S, I> моделируются.

Примечания

Вызов (2) может оставить *this в допустимом, но неопределённом состоянии, в зависимости от поведения перемещающей конструктор I и S.

Пример

См. также

prev
(C++20)
получает копию subrange с уменьшенным итератором на заданное расстояние
(публичный член-функция)
advance
(C++20)
передвигает итератор на заданное расстояние
(публичный член-функция)
next
(C++11)
инкрементирование итератора
(шаблон функции)
ranges::next
(C++20)
инкрементирует итератор на заданное расстояние или до границы
(niebloid)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/ranges/subrange/next

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API