std::input_or_output_iterator
Definido en el archivo de encabezado <iterator>
|
||
template< class I > concept input_or_output_iterator = |
(desde C++20) | |
El concepto input_or_output_iterator
forma la base de la taxonomía del concepto de iterador; cada tipo de iterador satisface los requisitos de input_or_output_iterator
.
El concepto de solo exposición /*can-reference*/ se satisface si y solo si el tipo es referenciable.
[editar] Notas
input_or_output_iterator
en sí mismo solo especifica operaciones para desreferenciar e incrementar un iterador. La mayoría de los algoritmos requerirán operaciones adicionales. Por ejemplo:
- comparar iteradores con centinelas (véase
sentinel_for
); - leer valores de un iterador (véase
indirectly_readable
einput_iterator
); - escribir valores a un iterador (véase
indirectly_writable
youtput_iterator
); - un conjunto más rico de movimientos de iterador (véase
forward_iterator
,bidirectional_iterator
,random_access_iterator
).
A diferencia de los requisitos de IteradorLegado, el concepto input_or_output_iterator
no requiere copiabilidad.
Se requiere que *i conserve la igualdad, aunque las operaciones de incremento requeridas por weakly_incrementable
no lo hagan.
[editar] Ejemplo
Un iterador mínimo.
#include <cstddef> #include <iterator> struct IteradorSimple { using difference_type = std::ptrdiff_t; int operator*(); IteradorSimple& operator++(); void operator++(int) { ++*this; } }; static_assert(std::input_or_output_iterator<IteradorSimple>);