inicio GeNeura cursos

raw_storage_iterator<T*, T>


Este es el último tipo de iteardor de las STL. Como los iteradores de inserción este es un tipo de de iterador de salida y como tal puede ser pasado a cualquier algoritmo que pueda escribir en un iterador de salida.

Los raw_storage_iterator son utilizados internamente por varios algoritmos de ordenación y mezcla de las STL. Este iterador permite utilizar memoria no inicializada. Es necesario realizar una llamada al constructor del tipo adecuado de forma que el objeto sea construido de forma correcta.


Ejemplo

#include <string.h>  // memset
#include <iostream>  // cout
#include <iterator>  // raw_storage_iterator

struct foo
{
    char a[ 5 ];
    foo( char i = -1 ) { memset( a, i, 5 ); };
};

main()
{
    char *p = (char *) malloc( 5 * sizeof( foo ) );
    raw_storage_iterator<foo *, foo > rsi((foo*)p);
    for ( int i = '1' ; i <= '5' ; i++ )
        *rsi++ = foo( i );
    for ( i = 0 ; i < ( 5 * sizeof( foo ) ) ; i++ )
        cout << *p++;
    cout << endl;
}