📜  rust 多维数组 - Rust (1)

📅  最后修改于: 2023-12-03 15:34:46.753000             🧑  作者: Mango

Rust 多维数组

在 Rust 中,多维数组是一种基于数组的数据结构,用于存储相同类型的数据。数组中的每个元素可以通过数组名和索引访问。

创建多维数组

创建多维数组需要使用嵌套的 [],其中每层 [] 表示一个维度。例如,以下代码创建了一个二维数组:

let mut two_d_arr: [[i32; 3]; 2] = [[1, 2, 3], [4, 5, 6]];

这个数组有两个维度,第一个维度的长度为 2,第二个维度的长度为 3。数组的类型为 [[i32; 3]; 2],其中 i32 是元素类型,3 是第二个维度的长度,2 是第一个维度的长度。

我们也可以通过使用 vec! 宏创建动态多维数组:

let mut dynamic_two_d_arr: Vec<Vec<i32>> = vec![vec![1, 2, 3], vec![4, 5, 6]];
访问多维数组

与一维数组类似,我们可以通过索引访问多维数组中的元素。要访问一个元素,需要通过两个索引,第一个索引访问第一个维度,第二个索引访问第二个维度。

例如,以下代码访问了二维数组中的某个元素:

let elem = two_d_arr[0][1]; // elem 的值为 2

同样,通过使用 for 循环遍历多维数组也是相对简单的:

for i in 0..2 {
    for j in 0..3 {
        println!("{}", two_d_arr[i][j]);
    }
}
多维数组的转换

有时我们需要将多维数组转换为一维数组或多维数组。以下代码创建了一个一维数组,并将二维数组 two_d_arr 转换为一维数组 one_d_arr

let mut one_d_arr = [0; 6];

for i in 0..2 {
    for j in 0..3 {
        one_d_arr[i * 3 + j] = two_d_arr[i][j];
    }
}

同样,以下代码将一维数组 one_d_arr 转换为二维数组 two_d_arr2

let mut two_d_arr2: [[i32; 3]; 2] = [[0; 3]; 2];

for i in 0..2 {
    for j in 0..3 {
        two_d_arr2[i][j] = one_d_arr[i * 3 + j];
    }
}
总结

多维数组是一种基于数组的数据结构,用于存储相同类型的数据。在 Rust 中,我们使用嵌套的 [] 来创建多维数组,通过两个索引访问数组中的元素。多维数组可以通过遍历转换为一维数组或多维数组。