9

私は、単一のforループでmulti_array全体をトラバースできるイテレーターを探して、boost::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回繰り返すループを取得します

4

1 に答える 1

11

std::for_eachfromの実装を使用して、<algorithm>個々の要素にアクセスできます。Boostのドキュメントに例があります

または、次のようarray::origin()に andを使用できます。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
}  
于 2011-04-06T20:34:28.930 に答える