たとえば、次のようなデータを簡単にコピーできます。例えばEigen::VectorXd
とstd::vector<double>
またはstd::vector<Eigen::Vector3d>
は、std :: vectorからEigen :: Refを作成する
std::vector<Eigen::Vector3> vec1(10, {0,0,0});
Eigen::VectorXd vec2(30);
VectorXd::Map(&vec2[0], vec1.size()) = vec1;
また、マトリックスブロック/列からEigen::Ref<VectorXd>
を作成/ ...
MatrixXd mat(10,10);
Eigen::Ref<VectorXd> vec = mat.col(0);
質問
std::vector<double>
またはstd::vector<Eigen::Vector3d>
から最初にデータをコピーすることなくEigen::Ref<VectorXd>
を作成することはできますか?
デフォルトでは、Refは、連続したメモリレイアウトを持つfloatの任意の高密度ベクトル表現を参照できます。* 'std :: vector 'を' Eigen :: Map'する必要があるかもしれません 'で始まり、次に' Ref'としてラップします。私は常にテンプレート関数を使い、 'Ref'は非テンプレート関数を対象としています。だから、試していないが、動作する必要があります。 refドキュメントへのリンク:http://eigen.tuxfamily.org/dox///classEigen_1_1Ref.html –
NameRakes