#c #templates #boost #boost-multi-array
#c #шаблоны #boost #boost-многомассивный
Вопрос:
Это из Boost docs и компилируется без проблем.
#include "boost/multi_array.hpp"
int main () {
// Create a 3D array that is 3 x 4 x 2
typedef boost::multi_array<double,3> array_type;
typedef array_type::index index;
array_type A(boost::extents[3][4][2]);
return 0;
}
Мой вопрос: каков второй параметр шаблона?Из документации мне это непонятно. Этот код будет компилироваться, только если для него установлено значение 3
.
Ответ №1:
Это то, сколько измерений вам нужно.
boost::extents[3][4][2] // we use 3 dimensions
Итак, если вы измените это число, вам придется изменить эту строку на.
Ответ №2:
Это «Числовое измерение», то есть количество измерений вашего массива: три, потому что у вас есть три нижних индекса на вашем boost::extents
.
Ответ №3:
Это номер измерения массива:
вы должны соответствующим образом изменить вызов ctor :
array_type A(boost::extents[3][4]);