Namespaces
Variants

std::experimental::ranges:: distance

From cppreference.net
Definido en el encabezado <experimental/ranges/iterator>
namespace {

constexpr /* no especificado */ distance = /* no especificado */ ;

}
(ranges TS)
(objeto de punto de personalización)
Firma de llamada
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)

Devuelve la distancia entre first y last , o entre el inicio y el final del rango r .

1) Si SizedSentinel < S, I > se cumple, equivalente a return last - first ; . De lo contrario, retorna el número de incrementos necesarios para llegar desde first hasta last . Si [ first , last ) no denota un rango, entonces I y S deben ser del mismo tipo y deben modelar SizedSentinel , y [ last , first ) debe denotar un rango. De lo contrario, el comportamiento es indefinido.
2) Equivalente a return ranges:: distance ( ranges:: begin ( r ) , ranges:: end ( r ) ) ; .
3) Equivalente a return ranges:: size ( r ) ; .

Instanciar las sobrecargas (2,3) puede ser incorrecto si el encabezado <experimental/ranges/range> no está incluido antes del punto de instanciación.

Contenidos

Objetos de punto de personalización

El nombre ranges::distance denota un objeto de punto de personalización , que es un objeto función de un tipo de clase literal Semiregular (denotado, con fines expositivos, como DistanceT ). Todas las instancias de DistanceT son iguales. Por lo tanto, ranges::distance puede copiarse libremente y sus copias pueden usarse indistintamente.

Dado un conjunto de tipos Args... , si std:: declval < Args > ( ) ... cumplen los requisitos para argumentos de ranges::distance mencionados anteriormente, DistanceT satisfará ranges :: Invocable < const DistanceT, Args... > . De lo contrario, ningún operador de llamada a función de DistanceT participa en la resolución de sobrecarga.

En cada unidad de traducción en la que ranges::distance está definida, se refiere a la misma instancia del objeto de punto de personalización. (Esto significa que puede usarse libremente en elementos como funciones inline y plantillas de función sin violar la regla de una definición .)

Valor de retorno

La distancia entre first y last , o entre el inicio y el final del rango r .

Ejemplo

Véase también

devuelve la distancia entre dos iteradores
(plantilla de función)
avanza un iterador una distancia dada
(plantilla de función)
incrementa un iterador
(plantilla de función)
decrementa un iterador
(plantilla de función)
obtiene el tamaño de un rango cuyo tamaño puede calcularse en tiempo constante
(objeto de punto de personalización)