本征矩阵是否有线迭代,以便我可以逐行迭代矩阵?

Is there a line iteration for Eigen matrix so that I can iterate through the matrix line by line?

问题是关于Eigen的。习惯了 C++ 中的迭代器,我认为很自然地期望 Eigen 矩阵有一个行(或列)迭代器,这样我就可以逐行迭代矩阵,例如,如下所示:

Matrix4f m;
auto it = m.line_cbegin();
while(it != m.line_cend()) {
  ...
  some_operation(*it)  //*it is expected to be a Vector4d object
  ...
  it++;
}

那么Eigen中有这样的迭代器吗?我已经检查了一些 Eigen 文档但没有找到任何文档,所以我在这里询问以防我错过了它。谢谢。

你需要得到 head of Eigen's devel branch, then simply do as the doc 说:

for(auto row : m.rowwise())
  some_operation(row);

当然这个例子意味着你也可以在m.rowwise()上调用begin()/end()cbegin()/cend()