inicio GeNeura cursos

Iteradores de Entrada


Los iteradores de entrada son extremadamente limitados. Sólo pueden usarse para leer objetos de algun tipo de almacenamiento. Como ejemplo de este tipo de iterador puedes ver istream_iterator.

No existe una implementación especifica de la esta clase. Esto sucede para todas las clase de iteradores. En su lugar lo que se da es una lista de funciones que debe implementar. Las operaciones que debe poseer un iterador de este tipo son:

Es importante usar este tipo de iteradores sólo en algoritmos que puedan calcularse en una sola pasada, pues como se puede observar carecen del operador --, con lo cual no se puede volver atrás.


Ejemplo

struct input 
{
    char *current;
    input( char *p ){ current = p; }
    operator*(){ return *current; }
    input operator++(int) 
    {
        input temp( *this );
        current++;
        return temp;
    }
    bool operator==(const input& y) const 
    {
        return current == y.current;
    }
    input begin()
    {
        return current;
    }
    input end() 
    {
        char *p = current + strlen( current );
        return input( p );
    }
};

main()
{
    ostream_iterator<char> out(cout);
    input in( "This is a test" );

    copy( in.begin(), in.end(), out );

    return 0;
}