operator- (std::counted_iterator)
| Iterator concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator primitives | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Algorithm concepts and utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Indirect callable concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Common algorithm requirements | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator adaptors | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Non-member functions | ||||
|
(C++20)
(C++20)
|
||||
|
(C++20)
|
||||
|
(C++20)
|
||||
|
operator-
(C++20)
|
||||
|
(C++20)
|
||||
|
(C++20)
|
||||
|
(C++20)
|
||||
| Helper classes | ||||
|
template
<
std::
common_with
<
I
>
I2
>
friend
constexpr
std::
iter_difference_t
<
I2
>
operator
-
(
|
(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) |