我知道这些转换主题已经多次提出,但是我找不到考虑移动语义的转换主题。
我想知道以下内容是否安全:
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
答案 0 :(得分:2)
假设,您实际上想对具有移动语义的非平凡标量(而不是double
)执行此操作,这应该是安全的-当然,只要您不使用{ {1}}之后。对于A
来说也是安全的,但没什么区别。
在您的情况下,将double
的数据映射到std::vector
可能会更好,如下所示:
Eigen::Map