Cómo convertir un vector en una matriz
¿ Cómo convierto a std::vector<double>
en a double array[]
?
Aceptado
Hay un truco bastante sencillo para hacerlo, ya que la especificación ahora garantiza que los vectores almacenen sus elementos de forma contigua:
std::vector<double> v;
double* a = &v[0];
¿Para qué? Es necesario aclarar: ¿Necesita un puntero al primer elemento de una matriz o una matriz?
Si está llamando a una función API que espera lo primero, puede hacerlo do_something(&v[0], v.size())
, donde v
hay un vector de double
s. Los elementos de un vector son contiguos.
En caso contrario, sólo debes copiar cada elemento:
double arr[100];
std::copy(v.begin(), v.end(), arr);
Asegúrese de que no solo arr
sea lo suficientemente grande, sino que también arr
se llene o tenga valores no inicializados.