我有一個3維的boost::multi_array
代表2d瓷磚地圖層。我希望能夠清除一層 - 又名迭代所有瓷磚並將其值設置爲0,但我無法弄清楚如何做到這一點 - 我相信我必須使用視圖,但文檔不會'對我來說很有意義。例如,在查看此示例代碼時:Boost multi_array Views
// 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
如何工作?這些範圍甚至代表什麼?對不起,如果這是顯而易見的,我只是無法得到它的竅門。
在此先感謝,ell。
是否有內置的方式來提取子數組的副本?也就是說,不是使用相同數據的視圖,而是實際複製數據,而無需手動迭代視圖的相應索引和新的multi_array? – 2016-02-22 14:45:44