D2:在运行时设置数组维度
在编译时还不知道数组的维数时,如何设置它 例如:byte[][]a=新字节[size][size];编译器不允许这样做。 我应该如何初始化网格?手动D2:在运行时设置数组维度,d,D,在编译时还不知道数组的维数时,如何设置它 例如:byte[][]a=新字节[size][size];编译器不允许这样做。 我应该如何初始化网格?手动 byte[] a1; for (int i; i < size; i++) { a1 ~= 0; } byte[][] a2; for (int i; i < size; i++) { a2 ~= a1; } 字节[]a1; for(int i;i
byte[] a1;
for (int i; i < size; i++) {
a1 ~= 0;
}
byte[][] a2;
for (int i; i < size; i++) {
a2 ~= a1;
}
字节[]a1;
for(int i;i
请告诉我有一个更简单的方法
编辑:这也行得通,但它仍然非常原始和缓慢
byte[][] a3;
a3.length = size;
for (int i; i < size; i++) {
a3[i].length = size;
}
字节[][]a3;
a3.长度=尺寸;
for(int i;i
不要深入,下面是在D中初始化多维动态数组的示例:
auto a = new int[][](4, 4);
编辑:下面是更完整的示例(显示您可以在运行时初始化数组以避免混淆):
是的,就是这样。当然,它应该读为auto a=newint[][](大小,大小);但它是有效的。谢谢我以前见过这个符号,但我不记得在哪里。应该注意的是,它仍然会生成一个参差不齐的数组,所以调整它的大小是很困难的。
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