std:: distance
|
Definido en el encabezado
<iterator>
|
||
|
template
<
class
InputIt
>
typename
std::
iterator_traits
<
InputIt
>
::
difference_type
|
(constexpr desde C++17) | |
Devuelve el número de saltos desde first hasta last .
Si
InputIt
no es
LegacyRandomAccessIterator
, el comportamiento es indefinido si
last
no es
alcanzable
desde
first
.
Si
InputIt
es un
LegacyRandomAccessIterator
, el comportamiento es indefinido si
first
y
last
no son accesibles uno desde el otro.
Contenido
Parámetros
Valor de retornoEl número de incrementos necesarios para ir desde first hasta last .
ComplejidadLineal.
Sin embargo, si
Implementación posibleConsulte también las implementaciones en libstdc++ y libc++ .
Ejemplo
Ejecutar este código
#include <iostream> #include <iterator> #include <vector> int main() { std::vector<int> v{3, 1, 4}; std::cout << "distance(first, last) = " << std::distance(v.begin(), v.end()) << '\n' << "distance(last, first) = " << std::distance(v.end(), v.begin()) << '\n'; // el comportamiento es indefinido (hasta LWG940) static constexpr auto il = {3, 1, 4}; // Desde C++17 `distance` puede usarse en contexto constexpr. static_assert(std::distance(il.begin(), il.end()) == 3); static_assert(std::distance(il.end(), il.begin()) == -3); } Salida: distance(first, last) = 3 distance(last, first) = -3 Informes de defectosLos siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
Véase también
| |||||||||||||||||||||||||||||||||