◐ Shell
clean mode source ↗

std::output_iterator - cppreference.com

De cppreference.com

Definido en el archivo de encabezado <iterator>

template <class I, class T> concept output_iterator = std::input_or_output_iterator<I> && std::indirectly_writable<I, T> && requires(I i, T&& t) { *i++ = std::forward<T>(t); // no se requiere que conserve la igualdad };

(desde C++20)

El concepto output_iterator es un refinamiento de input_or_output_iterator, añadiendo el requerimiento que puede ser usado para escribir valores de tipo y categoría de valor codificada por T (via indirectly_writable). equality_comparable no se requiere.

Requerimientos semánticos

Dejemos que E sea una expresión tal que decltype((E)) es T, e i sea un objeto desreferenciable de tipo I. output_iterator<I, T> es modelado solo si todos los conceptos que subsume se modelan, y *i++ = E; tiene efectos equivalentes a *i = E; ++i;.

Conservación de la igualdad

Una expresión es conservadora de igualdad si resulta en salidas iguales dadas entradas iguales.

  • Las entradas de una expresión consisten en sus operandos.
  • Las salidas de una expresión consisten en su resultado y todos los operandos modificados por la expresión (si es que los hay).

Cada expresión que se requiere sea conservadora de igualdad, se requiere además que sea estable: dos evaluaciones de tal expresión con los mismos objetos de entrada debe tener salidas iguales si no se encuentra alguna modificación interventora de esos objetos de entrada.

Notas

A diferencia de los requerimientos de OutputIterator, el concepto output_iterator no requiere que la etiqueta de la categoría del iterador se defina.

Los algoritmos en iteradores de salida deberán ser de un solo recorrido.

Véase también