我一直在研究boost :: multi_array库,寻找一个迭代器,它允许你在一个for循环中遍历整个 multi_array。
我认为该库中没有任何此类迭代器。 (在那里找到的迭代器允许你遍历multi_array的一个维度)
我错了吗? 如果没有,是否有任何库定义了这样的迭代器?
进入细节,我想写一些类似的东西:
boost::multi_array< double, 3 > ma(boost::extents[3][4][2]);
for( my_iterator it = ma.begin(); it != ma.end(); ++it )
{
// do something
// here *it has element type (in this case double)
}
并获得一个重复3x4x2次的循环
答案 0 :(得分:10)
您可以使用std::for_each
中<algorithm>
的实现来访问每个元素。 Boost documentation
或者,您可以使用array::origin()
和array::num_elements()
,如下所示:
boost::multi_array< double, 3 > ma(boost::extents[3][4][2]);
for(auto i = ma.origin(); i < (ma.origin() + ma.num_elements()); ++i)
{
// do something with i
}