簡體   English   中英

在Eigen :: Matrix :: data()上使用std :: move將Eigen :: Matrix轉換為向量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM