Вы абсолютно можете использовать список инициализатора. Что я люблю делать, когда занимаюсь такими вещами, так это начинать гораздо меньше. Начните с гораздо меньших массивов, чтобы им было легче управлять.
int main()
{
const double d[2][3][4] =
{
{
{ 0.1, 0.2, 0.3, 0.4 },
{ 0.5, 0.6, 0.7, 0.8 },
{ 0.9, 1.0, 1.1, 1.2 }
},
{
{ 0.1, 0.2, 0.3, 0.4 },
{ 0.5, 0.6, 0.7, 0.8 },
{ 0.9, 1.0, 1.1, 1.2 }
},
};
}
Здесь мы объявляем d
равным 2 x 3 x 4. Таким образом, мы можем использовать d[0]
и d[1]
, а d[0][2]
и d[1][2][3]
- последний элемент.
Вот что печатают различные вещи, отмечая, что я ленив и только что объявил внешние массивы с теми же элементами:
std::cout << d[0][0][0] << ", " << d[1][0][0] << "\n"; // prints 0.1, 0.1
std::cout << d[0][2][3] << ", " << d[1][2][3] << "\n"; // prints 1.2, 1.2
std::cout << d[0][1][2] << ", " << d[1][1][2] << "\n"; // prints 0.7, 0.7
Надеюсь, это прояснит ситуацию. Обратите внимание, что нет причин оставлять строки, как у меня, я просто считаю, что их легче читать.