Просто интересно, является ли это лучшей практикой для инициализации динамического, многомерного массива в D. В справочнике по языку есть раздел о массивах, но я не совсем уверен, что там говорится о том, чего я пытаюсь достичь.
class Map {
Tile[][] tiles;
this(uint width, uint height) {
tiles.length = height;
foreach (ref tilerow; tiles)
tilerow.length = width;
}
}
Map map1 = new Map(5000, 3000); // values determined at runtime
(или эквивалентная альтернатива, например, типичный цикл for (y=0;y Меня беспокоит то, что при этом перераспределяется каждая строка массива отдельно, а не весь кусок сразу, поэтому я не знаю, не приведет ли это к слишком большой перетасовке памяти. Кроме того, я полагаю, что не гарантируется смежность (поскольку tiles в данном случае является просто массивом указателей). Есть ли какой-нибудь "лучший" способ сделать это (который не включает использование одномерного массива и самостоятельное вычисление индекса)? Насколько я могу судить из документации, непрерывный многомерный массив может быть объявлен с неизменяемыми размерами только во время компиляции, просто интересно, может я что-то упускаю...