c++ - Eigen y std:: vector
(1)
Eigen usa memoria contigua, al igual que
std::vector
.
Sin embargo, el
std::vector
externo contiene un conjunto contiguo de
std::vector<std::complex<double> >
, cada uno apuntando a un conjunto diferente de números complejos (y puede tener diferentes longitudes).
Por lo tanto, la "matriz" estándar no es contigua.
Lo que puede hacer es copiar los datos a la matriz Eigen, hay varias formas de hacerlo.
Lo más sencillo sería recorrer
i
y
j
, con una mejor opción como algo así como
Eigen::MatrixXcd mat(rows, cols);
for(int i = 0; i < cols; i++)
mat.col(i) = Eigen::Map<Eigen::VectorXcd> (A[i].data(), rows);
Tengo una matriz, que se da como:
std::vector<std::vector<std::complex<double>>> A;
Y quiero asignar eso a la biblioteca de álgebra lineal de Eigen así:
Eigen::Map<Eigen::MatrixXcd, Eigen::RowMajor> mat(A.data(),51,51);
Pero el código falla con
error: no matching function for call to
‘Eigen::Map<Eigen::Matrix<std::complex<double>, -1, -1>, 1>::
¿Hay alguna forma de convertir un vector de un vector para que Eigen pueda usarlo?