【发布时间】:2011-12-14 10:29:54
【问题描述】:
只是好奇这是否是在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 在这种情况下只是一个指针数组)。有没有“更好”的方法来做到这一点(不涉及使用一维数组和自己计算索引)?据我从文档中可以看出,一个连续的多维数组只能在编译时用不可变维度声明,只是想知道我是否遗漏了什么......
【问题讨论】: