私はCigenで作成した行列をEigenで作成していますが、その行列の列を参照によって関数に渡したいと思います。新しいものを作り出すことなく。C++ Eigen:行列の列を参照によって関数に渡す
これは私のサンプルコード上記のコードで
int changeTwo(Eigen::Ref<Eigen::ArrayXd> f) {
for (int i = 0; i < 10; i++) {
f(i) = 2;
}
}
ある、f
は行列の列となり、私は例えば2にその列の最初の10個の要素を変更することを望む、私が
note: this candidate was rejected because at least one template argument could not be deduced
int main(int argc, const char * argv[]) {
Eigen::MatrixXd randomMat = Eigen::MatrixXd::Random(1000,2);
changeTwo(randomMat.col(0));
}
:このような機能を実行するために願っています
私はこのような列を渡そうとしました:changeTwo(randomMat.col(0).array());
、しかしそれは同じエラーをもたらしました。
何がうまくいかなかったかのヒントを得ることができますか?
[再現することはできません](HTTPS:/ /gist.github.com/anonymous/c882eaf23d21f35dbcdb9dae23614bfe)(固有3.3.4)。 –
私はアンリ・メンケと同じ結果を得ました。同じ結果を再現することはできません。上記のスニペットをコンパイルして実行することができました。サンプルサイズを小さくして(20,2)、関数呼び出しの前後に印刷しました。それは最初の10個の要素を十分に変更したことになります。 –