Eigen::VectorXd
はScalar operator()(Index i)
を持ち、ベクトルのインデックスi
の係数を返します。しかし、Eigen::VectorXd
はEigen::Matrix
の特殊タイプ、すなわちタイプEigen::Matrix<Scalar, Eigen::Dynamic, 1>;
であるので、Scalar operator()(Index i, Index j)
もある。Eigen :: VectorXdにアクセスする際に2番目のインデックスとしてゼロを使用するのは安全ですか?
質問:
は私がゼロにj
を設定した場合、第2バージョンを使用する(すなわちなし未定義の動作)安全であることを前提とすることはできますか?言い換えれば、以下のコードはOKですか?
Eigen::VectorXd v(4);
v << 1, 2, 3, 4;
std::cout << v(2, 0); // displays 3
それはOKだように見え、そこにすべての警告をデバッグモードでコンパイルされたときに何も失敗したアサーションや警告はありませんが、私は100%を確認していません。
あなたはそれを試してみませんか? – mascoj
私が言ったように私は試しましたが、いくつか風変わりなUBがある場合は、コードがOKであることをあなたに確かめさせません。 – vsoftco
申し訳ありませんが、私は誤解しました。あなたの言葉によって、それはあなたがコンパイルしたように聞こえるようにしましたが、それを実行しませんでした。 – mascoj