如何在c ++中将未确定大小的多维数组作为类的成员?

时间:2013-10-14 21:13:47

标签: c++ dynamic boost multidimensional-array

我正在查看来自boost的多维数组库,我在找出一种方法来在头文件中声明一个具有未定义形状的multi_array成员,比如“ A ”以下示例:

Class.h

std::size_t nX;
std::size_t nY;
std::size_t nZ;

boost::multi_array<double, 3> A;

稍后在源文件中实例化为特定大小:

Class.c ++

nX = 3
nY = 4
nZ = 2

A = boost::multi_array<double, 3>(boost::extents[nX][nY][nZ]);

但这给了我一个不等的形状错误。有没有办法做我正在尝试的事情?

最终,我需要一个成员容器来存储一个待确定的后期大小的三维数据。这适用于boost::numeric::ublas::matrix两个维度没有问题,但现在我需要一些适用于三维的东西。

有人能告诉我如何使用multi_array类,或者告诉我另一个可能有用的库吗?

1 个答案:

答案 0 :(得分:1)

而不是

A = boost::multi_array<double, 3>(boost::extents[nX][nY][nZ]);

您需要将resize()功能称为

A.resize(boost::extents[nX][nY][nZ]);