如果在编译时还不知道数组的维度,如何设置数组的维度?
例如:byte [] [] a = new byte [size] [size];编译器不允许它。 我该如何初始化网格?手动?
byte[] a1;
for (int i; i < size; i++) {
a1 ~= 0;
}
byte[][] a2;
for (int i; i < size; i++) {
a2 ~= a1;
}
请告诉我有一种更简单的方法。
编辑:这也有效,但它仍然是绝对原始的,而且很慢
byte[][] a3;
a3.length = size;
for (int i; i < size; i++) {
a3[i].length = size;
}
答案 0 :(得分:9)
不要深入研究,这里是在D中初始化多维动态数组的一个例子:
auto a = new int[][](4, 4);
编辑:这里有更完整的示例(显示您可以在运行时初始化数组以避免混淆):
int x = 3, y = 4, z = 5;
auto a = new byte[][][](x, y, z);
Stdout(a[0][0].length).newline; // prints 5
a[0][0].length = 10;
Stdout(a[0][0].length).newline; // prints 10