2

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

类.h

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

boost::multi_array<double, 3> A;

稍后在源文件中将其实例化为一定大小:

类.c++

nX = 3
nY = 4
nZ = 2

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

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

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

谁能告诉我 multi_array 类如何/是否可行,或者告诉我另一个可以代替的库?

4

1 回答 1

1

代替

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

你需要调用resize()函数

A.resize(boost::extents[nX][nY][nZ]);
于 2013-10-14T21:25:57.190 回答