我有std::vector<double> param
與(n + n * n)長度,我需要將最後(n * n)元素移動到MatrixXd。我這樣做:C++:如何將std :: vector轉換爲Eigen :: MatrixXd?
MatrixXd cov(n, n);
for(int i = 0 ; i < n ; ++i) {
for(int c = 0 ; c < n ; ++c) {
cov(i, c) = param(n + i * n + c);
}
}
有沒有更好的方法來做到這一點?
編輯:更好的方法更快;)
std :: vectors始終將其元素連續存儲在內存中 – Jonas
謝謝!它正在工作,但實際上應該是: 'double * v =&param(n); Eigen :: Map矩陣(v,n,n);' –
Poia