【问题标题】:How do I make a multidimensional array of undetermined size a member of a class in c++?如何使未确定大小的多维数组成为c ++中类的成员?
【发布时间】:2013-10-22 13:27:15
【问题描述】:

我正在查看来自 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 类,或者告诉我另一个可以代替的库?

【问题讨论】:

    标签: c++ dynamic boost multidimensional-array


    【解决方案1】:

    而不是

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

    你需要调用resize()函数

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-15
      • 1970-01-01
      相关资源
      最近更新 更多