Cómo convertir un vector en una matriz

¿Cómo convierto un std::vector<double>en unarray[]` de dobles?

Solución

Hay un truco bastante sencillo para hacerlo, ya que la especificación ahora garantiza que los vectores almacenan sus elementos de forma contigua:

std::vector v;
double* a = &v[0];
Comentarios (25)
vector thevector;
//...
double *thearray = &thevector[0];

Esto está garantizado por el estándar, sin embargo, hay algunas advertencias: en particular, tenga cuidado de utilizar sólo thearray mientras thevector está en el ámbito.

Comentarios (1)

Los vectores son, efectivamente, matrices bajo la piel. Si tienes una función

void f( double a[]);

puedes llamarla así:

vector  v;
v.push_back( 1.23 )
f( &v[0] );

Nunca debería ser necesario convertir un vector en una instancia de matriz real.

Comentarios (1)