我正在查看来自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类,或者告诉我另一个可能有用的库吗?
答案 0 :(得分:1)
而不是
A = boost::multi_array<double, 3>(boost::extents[nX][nY][nZ]);
您需要将resize()
功能称为
A.resize(boost::extents[nX][nY][nZ]);