Espacios de nombres
Variantes

std::input_iterator

De cppreference.com
 
 
Biblioteca de iteradores
Conceptos de iteradores
Primitivas de iteradores
Conceptos de algoritmos y servicios
Conceptos invocables indirectos
Requerimientos comunes de algoritmos
Servicios
Adaptadores de iteradores
Iteradores de flujos
Puntos de personalización de iteradores
Operaciones de iteradores
(C++11)
(C++11)
Acceso a rangos
(C++11)(C++14)
(C++11)(C++14)
(C++17)(C++20)
(C++14)(C++14)
(C++14)(C++14)
(C++17)
(C++17)
 
<tbody> </tbody>
Definido en el archivo de encabezado <iterator>
template<class I> concept input_iterator = std::input_or_output_iterator<I> && std::indirectly_readable<I> && requires { typename /*CONCEPTO_ITER*/<I>; } && std::derived_from</*CONCEPTO_ITER*/<I>, std::input_iterator_tag>;
(desde C++20)

El concepto input_iterator es un refinamiento de input_or_output_iterator, agregando el requisito de que los valores referenciados puedan leerse (a través de indirectly_readable) y el requisito de que la etiqueta del concepto de iterador esté presente.

Determinación del concepto de iterador

La definición de este concepto se especifica mediante una plantilla de alias de solo exposición /*CONCEPTO_ITER*/.

Para determinar /*CONCEPTO_ITER*/<I>, dejemos que RASGOS_ITER<I> denote I si la especialización std::iterator_traits<I> se genera a partir de la plantilla principal, o std::iterator_traits<I> de lo contrario:

  • Si RASGOS_ITER<I>::iterator_concept es válido y nombra un tipo, /*CONCEPTO_ITER*/<I> denota el tipo.
  • De lo contrario, si RASGOS_ITER<I>::iterator_category es válido y nombra un tipo, /*CONCEPTO_ITER*/<I> denota el tipo.
  • De lo contrario, si std::iterator_traits <I> se genera a partir de la plantilla principal, /*CONCEPTO_ITER*/<I> denota std::random_access_iterator_tag.
  • De lo contrario, /*CONCEPTO_ITER*/<I> no denota un tipo y da como resultado un error de sustitución.

Notas

A diferencia de los requisitos de IteradorDeEntradaLegado, el concepto input_iterator no requiere equality_comparable, ya que los iteradores de entrada generalmente se comparan con centinelas.

Véase también

Especifica que los objetos de un tipo pueden incrementarse y desreferenciarse.
(concepto) [editar]