Namespaces
Variants

opérateur+,-(ranges::concat_view::iterator)

Depuis fr.cppreference.net
 
 
Bibliothèque de plages
Adaptateurs de plages
 
 
friend constexpr /*iterator*/
    operator+( const /*iterator*/& it, difference_type n )
        requires /*concat-is-random-access*/<Const, Views...>;
(1) (depuis C++26)
friend constexpr /*iterator*/
    operator+( difference_type n, const /*iterator*/& it )
        requires /*concat-is-random-access*/<Const, Views...>;
(2) (depuis C++26)
friend constexpr /*iterator*/
    operator-( const /*iterator*/& it, difference_type n )
        requires /*concat-is-random-access*/<Const, Views...>;
(3) (depuis C++26)
friend constexpr difference_type
    operator-( const /*iterator*/& x, const /*iterator*/& y )
        requires /*concat-is-random-access*/<Const, Views...>;
(4) (depuis C++26)
friend constexpr difference_type
    operator-( const /*iterator*/& x, std::default_sentinel_t )
        requires /* see description */;
(5) (depuis C++26)
friend constexpr difference_type
    operator-( std::default_sentinel_t, const /*iterator*/& x )
        requires /* see description */;
(6) (depuis C++26)

Incrémente ou décrémente l'itérateur.

1) Équivalent à auto t = it; t += n; return t;.
2) Équivalent à return it + n;.
3) Équivalent à auto t = it; t -= n; return t;.
4) Soit Ix x.it_ .index() et Iy y.it_ .index() :
  • Si Ix > Iy est true, équivalent à 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>());
    .
  • Sinon, si Ix < Iy est true, équivalent à return -(y - x);.
  • Sinon, équivalent à return x.get-iter <Ix>() - y.get-iter <Iy>();.
Si x.it_ .valueless_by_exception() || y.it_ .valueless_by_exception() est true, le comportement est indéfini.
5) Soit Ix x.it_ .index(), équivalent à 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;
.
Soit Fs le paquet qui consiste en tous les éléments de Views sauf le premier élément, l'expression dans la clause requires est équivalente à

(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() est true, le comportement est indéfini.
6) Équivalent à return -(x - std::default_sentinel);.
Soit Fs le paquet qui consiste en tous les éléments de Views sauf le premier élément, l'expression dans la clause requires est équivalente à

(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() est true, le comportement est indéfini.

Ces fonctions ne sont pas visibles par la recherche non qualifiée ou qualifiée ordinaires, et ne peuvent être trouvées que par recherche dépendante des arguments lorsque concat_view::iterator <Const> est une classe associée des arguments.

Paramètres

it, x, y - les itérateurs
n - une position relative à l'emplacement actuel

Valeur de retour

Comme décrit ci-dessus.

Exemple

Voir aussi

avance ou décrémente l'itérateur sous-jacent
(fonction membre publique)