Однострочный инициализатор для Boost.MultiArray

У меня есть n-мерный 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);

Таким образом, у меня есть 4 строки кода для получения MultiArray, но я хотел бы сделать это в одной строке. Есть ли простой способ создать MultiArray с n измерениями, каждое из которых имеет size длину (так что я могу написать arr(samevaluearray(n,size))) или я пропустил удобный конструктор для MultiArray?

Edit: Это должно работать без зависимости от определенного значения n, т.е. arr({{size,size}}) будет работать только для n=2.

Поскольку это может быть непонятно: boost::multi_array(boost::extents[4][4][4]) правильно инициализирует массив 4x4x4-array, но каждый раз, когда n изменяется в исходном коде, каждую инициализацию приходится обновлять вручную, так что это не вариант.

7
задан tstenner 16 January 2012 в 15:38
поделиться