1

旧的 c 风格的静态数组在作为参数传递或作为值返回时会非常麻烦。为此,新的 std::array 非常方便。

但是对于多数组, std:: 中没有任何内容,并且 boost::multi_array 不仅仅是静态分配的。

当然,我可以说,

std::array<std::array<int,3>,2> my_array;

但我发现有点长,它对应于倒置的内置声明

int my_array[2][3];

我只是想知道是否已经有一些“库”编码这样一个概念(二维或任意维)

(对于后者,如果我是正确的,必须使用一些可变参数模板来输入例如

multi_array<int,3,4> A;
multi_array<int,3,5,8> B;
multi_array<int,4,7,8,9,8,3> C; //this one being quite rare though

)

编辑:对第一篇文章感到抱歉,我没有测试

4

1 回答 1

0

这对您的应用程序来说可能有点矫枉过正,但我​​曾使用Eigen库,并认为它的Matrix 模板类系列可能适合您。一个例子:

Eigen::Matrix<float, 3, 2> a;
a(1,0) = 1.1;
a(0,1) = 17.5;

编辑 1:哎呀,我不确定它是否支持 N 维矩阵。但对于二维的,我知道这很好。

我认为您可以使用 typedef,无论是与 Eigen 还是 with std::array,都可以使您的类型更具可读性。

于 2012-09-08T17:36:07.920 回答