Espacios de nombres
Variantes
Acciones

std::input_iterator

De cppreference.com
< cpp‎ | iterator
 
 
Biblioteca de iteradores
Conceptos de iteradores
input_iterator
(C++20)

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)
 
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.

[editar] 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.

[editar] 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.

[editar] Véase también

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