Definido en el encabezado
template<classCategory,classT,classDistance= std::ptrdiff_t,classPointer= T*,classReference= T&>structiterator;
(obsoleto en C++17)

std::iterator es la clase base proporcionada para simplificar las definiciones de los tipos necesarios para los iteradores.

Parámetros de la plantilla

Categoría la categoría del iterador. Debe ser una de las etiquetas de categoría de iterador.
T el tipo de los valores que se pueden obtener desreferenciando el iterador. Este tipo debe ser void para iteradores de salida.
Distancia un tipo que se puede utilizar para identificar la distancia entre iteradores
Puntero define un puntero al tipo iterado sobre (T)
Referencia define una referencia al tipo iterado sobre (T)

Tipos de miembros

tipo de miembro Definición
iterator_category Category
value_type T
difference_type Distance
pointer Pointer
reference Reference

Ejemplo

El siguiente ejemplo muestra cómo implementar un iterador de entrada al heredar de std::iterator.

#include#includetemplate<long FROM,long TO>classRangepublic:// member typedefs provided through inheriting from std::iteratorclassiterator:public std::iterator<
                        std::input_iterator_tag,// iterator_categorylong,// value_typelong,// difference_typeconstlong*,// pointerlong// reference>long num = FROM;public:explicititerator(long _num =0):num(_num)
        iterator&operator++()num = TO >= FROM ? num +1: num -1;return*this;
        iterator operator++(int)iterator retval =*this;++(*this);return retval;booloperator==(iterator other)constreturn num == other.num;booloperator!=(iterator other)constreturn!(*this== other);
        reference operator*()constreturn num;;
    iterator begin()returniterator(FROM);
    iterator end()returniterator(TO >= FROM? TO+1: TO-1);;intmain()// std::find requires an input iteratorauto range =Range<15,25>();auto itr = std::find(range.begin(), range.end(),18);
    std::cout <<*itr <<'n';// 18// Range::iterator also satisfies range-based for requirementsfor(long l :Range<3,5>())
        std::cout << l <<' ';// 3 4 5
    std::cout <<'n';

Producción:

18345

Ver también

iterator_traits proporciona una interfaz uniforme para las propiedades de un iterador
(plantilla de clase)
entrada_iterador_etiquetaetiqueta_iterador_salidaadelante_iterador_etiquetaetiqueta_iterador_bidireccionaletiqueta_iterador_acceso_aleatorioetiqueta_iterador_contiguo(C++20) tipos de clase vacíos utilizados para indicar categorías de iterador
(clase)