Понимание параметров Boost MultiArray

#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]);