C++ 本机:取消对 InnerIterator 的引用

C++ Eigen: dereferencing an InnerIterator

Matrix<T, Dynamic, Dynamic>::InnerIterator 似乎没有使用标准方式 (operator *) 来取消引用它。

它有一个成员函数value()

我很惊讶,因为这不能很好地与第三方算法(如 STL 算法)交互。

为什么不声明 operator *?更糟糕的是 value() 不是 return 引用,因此您无法更改指向元素的基础值。正确的使用方法是什么?

这是因为在大多数情况下,没有 index()/row()/col() 返回的相应 inner/row/column 索引,单独的值是无用的。在其他情况下,您只关心索引。无论如何,如果需要,您可以轻松编写一个小包装器使其与 STL 兼容。

最后,如果要修改值,有一个valueRef()方法返回非const引用