【发布时间】:2012-03-04 06:33:35
【问题描述】:
我有一个 3 维的 boost::multi_array 代表 2d 瓦片地图的层。我希望能够清除一个图层 - 也就是遍历一个图层上的所有图块并将其值设置为 0,但我不知道如何做到这一点 - 我相信我必须使用视图,但文档没有对我来说没有多大意义。例如,当查看此示例代码时:
// myarray = 2 x 3 x 4
//
// array_view dims: [base,bound) (dimension striding default = 1)
// dim 0: [0,2)
// dim 1: [1,3)
// dim 2: [0,4) (strided by 2),
//
typedef boost::multi_array_types::index_range range;
// OR typedef array_type::index_range range;
array_type::array_view<3>::type myview = myarray[ boost::indices[range(0,2)][range(1,3)][range(0,4,2)] ];
for (array_type::index i = 0; i != 2; ++i)
for (array_type::index j = 0; j != 2; ++j)
for (array_type::index k = 0; k != 2; ++k)
assert(myview[i][j][k] == myarray[i][j+1][k*2]);
boost::indices 是如何工作的?这些范围甚至代表什么?抱歉,如果这对某些人来说是显而易见的,我就是无法掌握它。
先谢谢了,嗯。
【问题讨论】:
标签: c++ boost multidimensional-array