Namespaces
Variants

operator+,-(ranges::concat_view::iterator)

De es.cppreference.net
 
 
Biblioteca de rangos
Adaptadores de rangos
 
 
friend constexpr /*iterator*/
    operator+( const /*iterator*/& it, difference_type n )
        requires /*concat-is-random-access*/<Const, Views...>;
(1) (desde C++26)
friend constexpr /*iterator*/
    operator+( difference_type n, const /*iterator*/& it )
        requires /*concat-is-random-access*/<Const, Views...>;
(2) (desde C++26)
friend constexpr /*iterator*/
    operator-( const /*iterator*/& it, difference_type n )
        requires /*concat-is-random-access*/<Const, Views...>;
(3) (desde C++26)
friend constexpr difference_type
    operator-( const /*iterator*/& x, const /*iterator*/& y )
        requires /*concat-is-random-access*/<Const, Views...>;
(4) (desde C++26)
friend constexpr difference_type
    operator-( const /*iterator*/& x, std::default_sentinel_t )
        requires /* see description */;
(5) (desde C++26)
friend constexpr difference_type
    operator-( std::default_sentinel_t, const /*iterator*/& x )
        requires /* see description */;
(6) (desde C++26)

Incrementa o decrementa el iterator.

1) Equivalente a auto t = it; t += n; return t;.
2) Equivalente a return it + n;.
3) Equivalente a auto t = it; t -= n; return t;.
4) Sea Ix igual a x.it_ .index() y Iy igual a y.it_ .index():
  • Si Ix > Iy es true, equivalente a 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>());
    .
  • De lo contrario, si Ix < Iy es true, equivalente a return -(y - x);.
  • De lo contrario, equivalente a return x.get-iter <Ix>() - y.get-iter <Iy>();.
Si x.it_ .valueless_by_exception() || y.it_ .valueless_by_exception() es true, el comportamiento no está definido.
5) Sea Ix igual a x.it_ .index(), equivalente a 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;
.
Sea Fs el paquete que consta de todos los elementos de Views excepto el primer elemento, la expresión en la cláusula requires es equivalente a

(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>> && ...)

.
Si x.it_ .valueless_by_exception() es true, el comportamiento no está definido.
6) Equivalente a return -(x - std::default_sentinel);.
Sea Fs el paquete que consta de todos los elementos de Views excepto el primer elemento, la expresión en la cláusula requires es equivalente a

(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>> && ...)

.
Si x.it_ .valueless_by_exception() es true, el comportamiento no está definido.

Estas funciones no son visibles para la búsqueda no calificada o la búsqueda calificada ordinarias, y solo se pueden encontrar mediante búsqueda dependiente de argumentos cuando concat_view::iterator <Const> es una clase asociada de los argumentos.

Parámetros

it, x, y - los iterators
n - una posición relativa a la ubicación actual

Valor de retorno

Como se describió anteriormente.

Ejemplo

Véase también

avanza o decrementa el iterador subyacente
(función miembro pública)