Matrix 特征包迭代行主稀疏矩阵

Matrix 特征包迭代行主稀疏矩阵,matrix,eigen,sparse-matrix,eigen3,Matrix,Eigen,Sparse Matrix,Eigen3,我试图迭代行主稀疏矩阵的非零元素,如下图所示: 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)

我试图迭代行主稀疏矩阵的非零元素,如下图所示:

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;
    }
}
将RowMajor更改为ColumnMajor可以使代码按预期工作

我不确定这一行的主要部分出了什么问题?有人能告诉我我错过了什么吗


提前感谢

我很惊讶它编译得很好:迭代器的类型不正确。它必须是
SparseMatrix::InnerIterator

啊!!!我懂了。这是有道理的。让我向Eigen提交一个bug,因为我没有看到任何编译错误。不确定这是否是用户的责任,但最好让Eigen人员知道。非常感谢你在这方面的帮助。很显然,在上一个Eigen版本中仍然会发生这种情况。是否确实报告/考虑了该缺陷?问题在于用户代码,但我想检查迭代器的构造函数会有所帮助。
-17891602       1       -2.65698e+303