operator+,-(ranges::concat_view::iterator)
От ru.cppreference.net
friend constexpr /*iterator*/
operator+( const /*iterator*/& it, difference_type n )
requires /*concat-is-random-access*/<Const, Views...>;
|
(1) | (начиная с C++26) |
friend constexpr /*iterator*/
operator+( difference_type n, const /*iterator*/& it )
requires /*concat-is-random-access*/<Const, Views...>;
|
(2) | (начиная с C++26) |
friend constexpr /*iterator*/
operator-( const /*iterator*/& it, difference_type n )
requires /*concat-is-random-access*/<Const, Views...>;
|
(3) | (начиная с C++26) |
friend constexpr difference_type
operator-( const /*iterator*/& x, const /*iterator*/& y )
requires /*concat-is-random-access*/<Const, Views...>;
|
(4) | (начиная с C++26) |
friend constexpr difference_type
operator-( const /*iterator*/& x, std::default_sentinel_t )
requires /* see description */;
|
(5) | (начиная с C++26) |
friend constexpr difference_type
operator-( std::default_sentinel_t, const /*iterator*/& x )
requires /* see description */;
|
(6) | (начиная с C++26) |
Увеличивает или уменьшает итератор.
1) Эквивалентно
auto t = it; t += n; return t;.2) Эквивалентно
return it + n;.3) Эквивалентно
auto t = it; t -= n; return t;.4) Пусть
Ix равно x.it_ .index() и Iy равно y.it_ .index():
- Если
Ix > Iyравноtrue, эквивалентноdifference_type result = ranges::distance(y.get-iter<Iy>(), y.get-end<Iy>());for (std::size_t I = Iy + 1; I < Ix; I++)result += ranges::distance(x.get-view<I>());return result + ranges::distance(x.get-begin<Ix>(), x.get-iter<Ix>());. - Иначе, если
Ix < Iyравноtrue, эквивалентноreturn -(y - x);. - Иначе, эквивалентно
return x.get-iter<Ix>() - y.get-iter<Iy>();.
Если
x.it_ .valueless_by_exception() || y.it_ .valueless_by_exception() равно true, поведение не определено.5) Пусть
Ix равно x.it_ .index(), эквивалентно difference_type result = ranges::distance(x.get-iter <Ix>(), x.get-end <Ix>());for (std::size_t I = Ix + 1, count = sizeof...(Views); I < count; I++) result += ranges::distance(x.get-view <I>());return -result;. Пусть
Fs - это пакет, состоящий из всех элементов Views кроме первого, выражение в предложении requires эквивалентно
(std::sized_sentinel_for<ranges::sentinel_t<maybe-const <Const, Views>>,
ranges::iterator_t<maybe-const <Const, Views>>> && ...) &&
(ranges::sized_range<maybe-const <Const, Fs>> && ...)
Если
x.it_ .valueless_by_exception() равно true, поведение не определено.6) Эквивалентно
return -(x - std::default_sentinel);. Пусть
Fs - это пакет, состоящий из всех элементов Views кроме первого, выражение в предложении requires эквивалентно
(std::sized_sentinel_for<ranges::sentinel_t<maybe-const <Const, Views>>,
ranges::iterator_t<maybe-const <Const, Views>>> && ...) &&
(ranges::sized_range<maybe-const <Const, Fs>> && ...)
Если
x.it_ .valueless_by_exception() равно true, поведение не определено.Эти функции не видны при обычном неквалифицированном или квалифицированном поиске и могут быть найдены только с помощью поиска, зависящего от аргументов, когда concat_view::iterator <Const> является ассоциированным классом аргументов.
Параметры
| it, x, y | - | the iterators |
| n | - | позиция относительно текущего местоположения |
Возвращаемое значение
Как описано выше.
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
перемещает или уменьшает базовый итератор
(public member function) |