Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
D2:在运行时设置数组维度_D - Fatal编程技术网

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

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[][]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[][] 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