¿Cómo leer un bloque de datos de un archivo usando punteros inteligentes?

Al usar punteros en bruto pude hacer eso:

std::vector< Vector3* > vertices;
Vector3* v = new Vector3[amount];
fread(v, sizeof(Vector3), amount, file);
for ( int i = 0; i < amount; ++i )
    vertices.push_back( &v[i] );

Ahora bien, ¿cómo hacer lo mismo con los punteros inteligentes? Me intentaron algo como esto:

std::vector< std::unique_ptr< Vector3 > > vertices;
std::unique_ptr< Vector3 >* v = new std::unique_ptr< Vector3 >[amount];
fread(v, sizeof(Vector3), amount, file);
for ( int i = 0; i < amount; ++i )
    vertices.push_back( std::move( v[i] ) );
delete [] v;

tiene algun sentido? Compila y funciona, pero me temo que la última instrucción (delete [] v;) ¿es esto correcto?

preguntado el 21 de septiembre de 13 a las 12:09

1 Respuestas

Tómalo con calma

std::vector<Vector3> vertices(amount);
assert(!vertices.empty());
fread(&vertices[0], sizeof(Vector3), amount, file);

Respondido el 21 de Septiembre de 13 a las 12:09

Estaba ciego. Gracias por mostrarme que ni siquiera necesito consejos;) - tom

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.