Namespaces
Variants

std::experimental::ranges:: distance

From cppreference.net
Défini dans l'en-tête <experimental/ranges/iterator>
namespace {

constexpr /* unspecified */ distance = /* unspecified */ ;

}
(ranges TS)
(objet de point de personnalisation)
Signature d'appel
template < Iterator I, Sentinel < I > S >
constexpr ranges :: difference_type_t < I > distance ( I first, S last ) ;
(1)
template < Range R >
constexpr ranges :: difference_type_t < ranges:: iterator_t < R >> distance ( R && r ) ;
(2)
template < SizedRange R >
constexpr ranges :: difference_type_t < ranges:: iterator_t < R >> distance ( R && r ) ;
(3)

Retourne la distance entre first et last , ou entre le début et la fin de la plage r .

1) Si SizedSentinel < S, I > est satisfait, équivalent à return last - first ; . Sinon, retourne le nombre d'incrémentations nécessaires pour passer de first à last . Si [ first , last ) ne dénote pas une plage, alors I et S doivent être du même type et doivent modéliser SizedSentinel , et [ last , first ) doit dénoter une plage. Sinon, le comportement est indéfini.
2) Équivalent à return ranges:: distance ( ranges:: begin ( r ) , ranges:: end ( r ) ) ; .
3) Équivalent à return ranges:: size ( r ) ; .

L'instanciation des surcharges (2,3) peut être mal formée si l'en-tête <experimental/ranges/range> n'est pas inclus avant le point d'instanciation.

Table des matières

Objets de point de personnalisation

Le nom ranges::distance désigne un objet de point de personnalisation , qui est un objet fonction d'un type de classe littéral Semiregular (désigné, à des fins d'exposition, comme DistanceT ). Toutes les instances de DistanceT sont égales. Ainsi, ranges::distance peut être copié librement et ses copies peuvent être utilisées de manière interchangeable.

Étant donné un ensemble de types Args... , si std:: declval < Args > ( ) ... satisfont aux exigences pour les arguments de ranges::distance ci-dessus, DistanceT satisfera ranges :: Invocable < const DistanceT, Args... > . Sinon, aucun opérateur d'appel de fonction de DistanceT ne participe à la résolution de surcharge.

Dans chaque unité de traduction où ranges::distance est défini, il fait référence à la même instance de l'objet de point de personnalisation. (Cela signifie qu'il peut être utilisé librement dans des éléments comme les fonctions inline et les modèles de fonction sans violer la règle de définition unique .)

Valeur de retour

La distance entre first et last , ou entre le début et la fin de la plage r .

Exemple

Voir aussi

renvoie la distance entre deux itérateurs
(modèle de fonction)
avance un itérateur d'une distance donnée
(modèle de fonction)
incrémente un itérateur
(modèle de fonction)
décrémente un itérateur
(modèle de fonction)
obtient la taille d'une plage dont la taille peut être calculée en temps constant
(objet de point de personnalisation)