D2:在运行时设置数组维度

fwe*_*end 6 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;
} 
Run Code Online (Sandbox Code Playgroud)

请告诉我有一个更简单的方法.

编辑:这也有效,但它仍然无可救药地原始,而且很慢

byte[][] a3; 
a3.length = size;
for (int i; i < size; i++) {
     a3[i].length = size;
} 
Run Code Online (Sandbox Code Playgroud)

bar*_*ddu 9

不要深入,这是在D中初始化多维动态数组的示例:

auto a = new int[][](4, 4);
Run Code Online (Sandbox Code Playgroud)

编辑:这里是更完整的示例(显示您可以在运行时初始化数组以避免混淆):

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
Run Code Online (Sandbox Code Playgroud)