std::input_or_output_iterator - cppreference.com
De cppreference.com
| Definido en el archivo de encabezado |
||
|
|
(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.
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_readableeinput_iterator); - escribir valores a un iterador (véase
indirectly_writableyoutput_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.
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>);