如何使大小不确定的多维数组成为 c++ 中类的成员

How do I make a multidimensional array of undetermined size a member of a class in c++?

本文关键字:c++ 成员 何使大 不确定 数组      更新时间:2023-10-16

我正在查看 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 类如何/是否可以做到这一点,或者告诉我另一个可能工作的库?

而不是

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

您需要调用resize()函数为

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