Namespaces
Variants

operator- (std::counted_iterator)

From cppreference.net
Iterator library
Iterator concepts
Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(C++11) (C++14)
(C++14) (C++14)
(C++11) (C++14)
(C++14) (C++14)
(C++17) (C++20)
(C++17)
(C++17)
template < std:: common_with < I > I2 >

friend constexpr std:: iter_difference_t < I2 > operator - (

const counted_iterator & x, const counted_iterator < I2 > & y ) ;
(depuis C++20)

Calcule la distance entre deux adaptateurs d'itérateur.

Le comportement n'est pas défini si x et y ne pointent pas vers des éléments de la même séquence. Autrement dit, il doit exister un certain n tel que std:: next ( x. base ( ) , x. count ( ) + n ) et std:: next ( y. base ( ) , y. count ( ) + n ) se réfèrent au même élément.

Ce modèle de fonction n'est pas visible par la recherche non qualifiée ou qualifiée ordinaire, et ne peut être trouvé que par la recherche dépendante des arguments lorsque std::counted_iterator<I> est une classe associée des arguments.

Table des matières

Paramètres

x, y - adaptateurs d'itérateur pour calculer la différence de

Valeur de retour

y. count ( ) - x. count ( )

Notes

Puisque la longueur décroît, et non croît, l'ordre des arguments de operator - dans l'expression sous-jacente est inversé, c'est-à-dire que y est le lhs et x est le rhs .

Exemple

#include <initializer_list>
#include <iterator>
int main()
{
    static constexpr auto v = {1, 2, 3, 4, 5, 6};
    constexpr std::counted_iterator<std::initializer_list<int>::iterator>
        it1{v.begin(), 5},
        it2{it1 + 3},
        it3{v.begin(), 2};
    static_assert(it1 - it2 == -3);
    static_assert(it2 - it1 == +3);
//  static_assert(it1 - it3 == -3); // UB: les opérandes de l'opérateur- ne font pas référence à
                                    // des éléments de la même séquence
}

Voir aussi

avance ou décrémente l'itérateur counted_iterator
(fonction membre publique)
(C++20)
avance l'itérateur
(fonction template)
calcule la distance signée jusqu'à la fin
(fonction template)