5

以下に示すように、行主疎行列のゼロ以外の要素を反復しようとしていました。

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 に変更すると、コードが期待どおりに機能します。

行の主要部分で何が問題になったのかわかりませんか? ここで何が欠けているのか教えてください。

前もって感謝します

4

1 に答える 1