【发布时间】:2012-01-11 17:58:55
【问题描述】:
我有一个 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);
所以我有 4 行代码来获取 MultiArray,但我想在一行中完成。
有没有什么简单的方法可以生成一个 n 维的 MultiArray,每个维度的长度为 size(所以我可以写 arr(samevaluearray(n,size))),还是我错过了一个方便的 MultiArray 构造函数?
编辑:它应该可以在不依赖于特定 n 值的情况下工作,即 arr({{size,size}} 仅适用于 n=2。
由于可能不清楚:boost::multi_array<char,n>(boost::extents[4][4][4]) 正确初始化了一个 4x4x4 数组,但是每次在源代码中更改 n 时,每次初始化都必须手动更新,所以它不是一个选项。
【问题讨论】:
-
天啊,把它包装在一个接受两个整数并返回
boost::multi_array的函数中是不是很难? -
或者为了真正的乐趣,将其包装在宏中;-)
标签: c++ boost boost-multi-array