2

boost の多次元配列ライブラリを調べていますが、次の例の " A " のように、未定義の形状を持つヘッダー ファイルで multi_array メンバーを宣言する方法がわかりません。

Class.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]);

しかし、これにより不等形状エラーが発生します。私が試みていることを行う方法はありますか?

最終的には、後で決定されるサイズの 3 次元データを格納するためのメンバー コンテナーが必要です。これはboost::numeric::ublas::matrix2 次元では問題なく機能しましたが、今度は 3 次元で機能するものが必要です。

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 に答える