特征库中的多维数组

Multidimensional arrays in eigen library

本文关键字:数组 特征      更新时间:2023-10-16

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

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

我真的很喜欢特征库,它快速且易于使用。对我来说唯一缺少的是真正的多维数组。

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

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

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

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

举个例子。

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

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

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

其中,定义peren运算符通常更容易,因为它不依赖于Vector类的实现:

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 类:

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