以下に示すように、行主疎行列のゼロ以外の要素を反復しようとしていました。
Eigen::SparseMatrix<double,Eigen::RowMajor> Test(2, 3);
Test.insert(0, 1) = 34;
Test.insert(1, 2) = 56;
for (int k = 0; k < Test.outerSize(); ++k){
for (Eigen::SparseMatrix<double>::InnerIterator it(Test, k); it; ++it){
cout << it.row() <<"\t";
cout << it.col() << "\t";
cout << it.value() << endl;
}
}
しかし、正しい値が表示されません。代わりに、以下に示すように、it.row() のランダム値、it.col() の値 1、および it.value() のランダム値が表示されます。
-17891602 1 -2.65698e+303
RowMajor を ColumnMajor に変更すると、コードが期待どおりに機能します。
行の主要部分で何が問題になったのかわかりませんか? ここで何が欠けているのか教えてください。
前もって感謝します