5
Eigen :: ArrayXXd型の配列をEigen :: MatrixXdに移動(または入れ替える)したいと思います。 は、これを達成するために、私は、出力の両方のサイズが配列のコピーされた意味し、10000であることを示しているC++ Eigen arrayXXdを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;
}
、試みました。コピーを避けるために、私も試した 、
Eigen::MatrixXd mat;
mat.swap(array.matrix()); (runtime error assert failure)
// swap(array.matrix(), mat); (compile error)
私がテストした固有のバージョンは3.2.0ベータ1であるとgcc 4.8.0を使用しました。実験から、行列と配列の移動意味はまだ実装されていないようです。そうですか?
安全に移動できる方法はありますか(コピーなし)?
ありがとう、エイゲンは今サポートしていないようです。それでは、コピーせずに安全に交換できる方法はありますか?実際、私の行列は非常に大きいので、私は記憶の不足に苦しんでいます。 – Sungmin
@Sungmin:ドキュメントを見てください。スワッピングを実行する機能があれば、そのように言います。 –
私がこの文書からわかるように、ArrayXXdからMatrixXdへの変換機能があります。 2つの異なるMatrixXdの間で交換が行われます。だから私はArrayXXdとMatrixXdを交換する方法があると思った。 – Sungmin