在Eigen :: Matrix :: data()上使用std :: move将Eigen :: Matrix转换为向量

时间:2018-12-06 14:12:24

标签: c++ eigen move-semantics

我知道这些转换主题已经多次提出,但是我找不到考虑移动语义的转换主题。

我想知道以下内容是否安全:

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

1 个答案:

答案 0 :(得分:2)

假设,您实际上想对具有移动语义的非平凡标量(而不是double)执行此操作,这应该是安全的-当然,只要您不使用{ {1}}之后。对于A来说也是安全的,但没什么区别。

在您的情况下,将double的数据映射到std::vector可能会更好,如下所示:

Eigen::Map