タイプ 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 が使用されました。実験から、行列と配列の移動セマンティックはまだ実装されていないようです。そうですか?
(コピーなしで)安全に移動できる方法はありますか?