come attraversare un boost :: multi_array

Ho esaminato la libreria boost :: multi_array in cerca di un iteratore che consente di attraversare l’intero multi_array in un ciclo for for.

Non penso che ci sia un tale iteratore in quella libreria. (Gli iteratori che si trovano lì consentono di attraversare una singola dimensione del multi_array)

Ho sbagliato?
In caso contrario, esiste una libreria che definisce tale iteratore?

Entrando nei dettagli, mi piacerebbe scrivere qualcosa come:

boost::multi_array 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) } 

e ottieni un ciclo che si ripete 3x4x2 volte

    È ansible utilizzare un’implementazione di std::for_each da per accedere a ogni singolo elemento. C’è un esempio nella documentazione di Boost

    In alternativa, puoi usare array::origin() e array::num_elements() come segue:

     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 }