【发布时间】:2013-05-07 06:27:09
【问题描述】:
我想将 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。从实验来看,矩阵和数组的移动语义似乎还没有实现。是对的吗?
有没有一种方法可以让我安全地移动(无需复制)?
【问题讨论】: