C ++静态多数组包装器

时间:2012-09-08 16:35:52

标签: c++ multidimensional-array wrapper

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

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

当然,我可以做,比方说,

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

但是我觉得很长,它对应于倒置的内置声明

int my_array[2][3];

我只是想知道是否已经有一些&#34;库&#34;编码这样一个概念(二维或任何维度)

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

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

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

1 个答案:

答案 0 :(得分:0)

对您的应用程序来说可能有点过分,但我已经使用Eigen库并认为它family of Matrix template classes可能适合您。一个例子:

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

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

我认为您可以使用带有Eigen或std::array的typedef来使您的类型更具可读性。