std:: input_iterator
|
Definido en el encabezado
<iterator>
|
||
|
template
<
class
I
>
concept input_iterator
=
|
(desde C++20) | |
El concepto
input_iterator
es un refinamiento de
input_or_output_iterator
, añadiendo el requisito de que los valores referenciados puedan leerse (a través de
indirectly_readable
) y el requisito de que esté presente la etiqueta del concepto de iterador.
Contenidos |
Determinación del concepto de iterador
La definición de este concepto se especifica mediante un alias de plantilla solo para exposición /*ITER_CONCEPT*/ .
Para determinar /*ITER_CONCEPT*/ < I > , sea ITER_TRAITS < I > igual a I si la especialización std:: iterator_traits < I > está generada desde la plantilla principal, o std:: iterator_traits < I > en caso contrario:
- Si ITER_TRAITS < I > :: iterator_concept es válido y nombra un tipo, /*ITER_CONCEPT*/ < I > denota el tipo.
- De lo contrario, si ITER_TRAITS < I > :: iterator_category es válido y nombra un tipo, /*ITER_CONCEPT*/ < I > denota el tipo.
-
De lo contrario, si
std::
iterator_traits
<
I
>
se genera desde la plantilla principal,
/*ITER_CONCEPT*/
<
I
>
denota
std::random_access_iterator_tag
.
(Es decir, se asume que std:: derived_from < /*ITER_CONCEPT*/ < I > , std:: input_iterator_tag > es true .) - De lo contrario, /*ITER_CONCEPT*/ < I > no denota un tipo y resulta en un fallo de sustitución.
Notas
A diferencia de los
LegacyInputIterator
requirements, el concepto
input_iterator
no requiere
equality_comparable
, ya que los input iterators normalmente se comparan con sentinels.
Ejemplo
Un iterador de entrada mínimo.
#include <cstddef> #include <iterator> class SimpleInputIterator { public: using difference_type = std::ptrdiff_t; using value_type = int; int operator*() const; SimpleInputIterator& operator++(); void operator++(int) { ++*this; } }; static_assert(std::input_iterator<SimpleInputIterator>);
Véase también
|
(C++20)
|
especifica que los objetos de un tipo pueden ser incrementados y desreferenciados
(concept) |
|
(C++20)
|
especifica que un
input_iterator
es un iterador de avance, que admite comparación de igualdad y múltiples pasadas
(concept) |