如何遍历boost::multi_array

how to traverse a boost::multi_array

本文关键字:multi array boost 何遍历 遍历      更新时间:2023-10-16

我一直在研究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次的循环

您可以使用来自<algorithm>std::for_each实现来访问每个单独的元素。Boost文档

中有一个示例

也可以使用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
}