Как мне инициализировать этот многомерный массив?

У меня есть гигантский трехмерный массив, представляющий мой мир. Он слишком велик для статической инициализации:

alias Cell[128][128][128] World; // <-- The compiler points to this line

Error: index 128 overflow for static array

Я пытался использовать World* world, но он все равно выдавал ошибку с переполнением, описанным выше. Итак, что у меня есть прямо сейчас, так это уродливая каша:

alias Cell[][][] World;
// ...
private World world;
// ...
world.length = WORLD_XDIM;
for (uint x = 0; x < world.length; ++x)
{
    world[x].length = WORLD_YDIM;
    for (uint y = 0; y < world[x].length; ++y)
    {
        world[x][y].length = WORLD_ZDIM;
    }
}

Это работает, но заставляет меня немного плакать внутри. Есть ли способ привести результат calloc к трехмерному массиву? Я сделал это с помощью нарезки обычных массивов, но трехмерность меня смущает.

6
задан Jonathan M Davis 9 May 2012 в 20:21
поделиться