次のように初期化する n 次元の Boost.MultiArray があります。
const int n=3, size=4; //# of dimensions and size of one dimension
boost::multi_array<char,n> arr;
boost::array<size_t,n> extents; //size of each dimension
extents.assign(size); //assign size to each dimension -> {{4, 4, 4}}
arr.resize(extents);
したがって、MultiArray を取得するためのコードは 4 行ありますが、1 行で実行したいと考えています。size
それぞれの長さが n 次元の MultiArray を生成する簡単な方法はありますか(したがって、 と書くことができますarr(samevaluearray(n,size))
)、または MultiArray の便利なコンストラクターを見逃していましたか?
編集: n の特定の値に依存せずに機能するはずです。つまり、 に対してarr({{size,size}}
のみ機能しn=2
ます。
明確ではない可能性があるためboost::multi_array<char,n>(boost::extents[4][4][4])
、4x4x4 配列を正しく初期化しますがn
、ソースコードが変更されるたびに、すべての初期化を手動で更新する必要があるため、オプションではありません。