Espacios de nombres
Variantes
Acciones

std::input_or_output_iterator

De cppreference.com
< cpp‎ | iterator
 
 
Biblioteca de iteradores
Conceptos de iteradores
input_or_output_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
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_or_output_iterator =
        requires(I i){
            {*i }->/*can-reference*/;
        }&&

        std::weakly_incrementable<I>;
(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:

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>);
close