[英]Convert Eigen::Matrix to vector using std::move on Eigen::Matrix::data()
我知道這些轉換主題已經多次提出,但是我找不到考慮移動語義的主題。
我想知道以下內容是否安全:
Eigen::MatrixXd A(n,n);
//fill matrix A
std::vector<double> A_vec;
A_vec.insert(A_vec.end(), std::make_move_iterator(A.data()), std::make_move_iterator(A.data() + A.size()));
//destruct A
假設,您實際上是想對具有移動語義的非平凡標量(而不是double
)執行此操作,這應該是安全的-當然,只要您以后不使用A
對於double
來說,它也是安全的,但沒有區別。
在您的情況下,實際上將std::vector
的數據映射到Eigen::Map
可能更好,如下所示:
std::vector<double> A_vec(n*n); // allocate data into A_vec
Eigen::Map<Eigen::MatrixXd> A(A_vec.data(), n, n);
// fill matrix A.
// data is immediately stored into A_vec
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.