mam n-wymiarowej Boost.MultiArray zainicjować w następujący sposób:Jedna linia initialiser dla Boost.MultiArray
const int n=3, size=4; //# of dimensions and size of one dimension
boost::multi_array<char,n> arr;
boost::array<size_t,n> extents; //size of each dimension
extents.assign(size); //assign size to each dimension -> {{4, 4, 4}}
arr.resize(extents);
Więc mam 4 linie kodu, aby uzyskać MultiArray, ale chciałbym zrób to w jednym wierszu. Czy istnieje prosty sposób na wygenerowanie MultiArray o n wymiarach, każdy o długości size
(czy mogę napisać arr(samevaluearray(n,size))
) lub czy brakuje mi przydatnego konstruktora dla MultiArray?
Edit: To powinno działać bez zależności od pewnej wartości n, tj arr({{size,size}}
będzie działać tylko dla n=2
.
Ponieważ nie może być jasne: boost::multi_array<char,n>(boost::extents[4][4][4])
poprawnie inicjuje 4x4x4-tablicę, ale za każdym razem n
zmienia się w kod źródłowy, każdy inicjalizacji musi być aktualizowana ręcznie, więc nie jest to opcja.
OMG, to jest, że trudno owinąć to w funkcja, która akceptuje dwie liczby całkowite i zwraca 'boost :: multi_array'? –
Lub dla prawdziwej zabawy, zapakuj go wewnątrz makra ;-) –