3 关于优秀特征库的使用和未来的简单问题:
- 它有理由不能通过
matrix[i][j]
访问矩阵,而只能通过matrix(i,j)
吗? - 是否有计划实现这样的语法?
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;