特征库中的多维数组

Multidimensional arrays in eigen library

关于优秀eigen库的使用和未来的3个简单问题:

  1. 为什么不能通过 matrix[i][j] 访问矩阵,而只能通过 matrix(i,j) 访问矩阵?
  2. 是否有计划实现这样的语法?
  3. 是否会实现多维数组matrix[n][m]...[l]

我非常喜欢 eigen 库,它快速且易于使用。我唯一缺少的是真正的多维数组。

我不能代表 eigen 库,因为我从未使用过它,但我可以代表代码的设计。为了使用 [][] 表示法,这通常意味着矩阵建立在基础向量之上,这些基础向量也重载了 [] 运算符。

可能 eigen 库的作者不想经历将向量定义为矩阵 classes 的基础的麻烦。

举个例子。

class Matrix {
   Vector& operator[](std::size_t ind);
};

class Vector {
   double& operator[](std::size_t ind);
};

允许我们像这样使用 Matrix class:

Matrix matrix;
matrix[0][0] = 1.2;

定义 peren 运算符通常更容易,因为它不依赖于 Vector class:

的实现
class Matrix {
    double& operator()(std::size_t i, std::size_t j);
    const double& operator()(std::size_t i, std::size_t j) const;
};

允许我们像这样使用 Matrix class:

Matrix matrix;
matrix(4, 3) = 9.2;

通过新的 Tensor 模块支持多维数组:

http://eigen.tuxfamily.org/dox-devel/unsupported/group__CXX11__Tensor__Module.html