我有以下代码
fn main() {
let mut array: [[[i32; 32]; 32]; 2] = Default::default();
for x in 0..31 {
for y in 0..31 {
array[x][y][1] = 1;
}
}
}
当我运行它时,我得到了错误
thread 'main' panicked at 'index out of bounds: the len is 2 but the index is 2', src/main.rs:6:13
这是
array[x][y][1] = 1;
行。如果数组的长度为2,则应该可以在索引1中放入内容,但是由于某种原因,它表示我正在尝试访问索引2。对此的解决方案是什么?
最佳答案
let array1: [i32; 2];
是2个
i32
的数组。简单。现在i32
是2数组“内部”的类型。因此,当我们编写时:let array2: [[i32; 32]; 2];
这是2个
[i32; 32]
元素的数组。因此,这是一个包含32个i32
元素的2个数组的数组。当您这样做时:let array: [[[i32; 32]; 32]; 2]
内部维度为
32
,而最大外部维度为2。我想你的意思是:
let mut array: [[[i32; 2]; 32]; 32] = Default::default();
for x in 0..31 {
for y in 0..31 {
array[x][y][1] = 1;
}
}
关于arrays - 我的3D数组长度为2,但在运行时访问索引2紧急情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60424021/