我想将 Eigen::ArrayXXd 类型的数组移动(或交换)到 Eigen::MatrixXd。为了实现这一点,我尝试了,
#include <iostream>
#include <Eigen/Dense>
using namespace std;
int main(int , char** ) {
Eigen::ArrayXXd array(100,100);
auto mat2 = std::move(mat.matrix());
cout << array.size() << endl;
cout << mat.size() << endl;
}
输出显示两个大小都是 10000,这意味着数组被复制。为了避免复制,我也尝试过,
Eigen::MatrixXd mat;
mat.swap(array.matrix()); (runtime error assert failure)
// swap(array.matrix(), mat); (compile error)
我测试的Eigen版本是3.2.0 beta1,使用的是gcc 4.8.0。从实验来看,矩阵和数组的移动语义似乎还没有实现。那正确吗?
有没有办法可以安全地移动(没有副本)?