在Rust中,二维数组通常表示为一个向量(Vec
)的向量(Vec<Vec<T>>
)。要切换二维数组中的列和行,可以使用迭代器和闭包来实现。以下是一个示例代码,展示了如何进行这种转换:
fn transpose(matrix: &Vec<Vec<i32>>) -> Vec<Vec<i32>> {
if matrix.is_empty() {
return vec![];
}
let row_len = matrix.len();
let col_len = matrix[0].len();
(0..col_len)
.map(|j| (0..row_len).map(|i| matrix[i][j]).collect())
.collect()
}
fn main() {
let matrix = vec![
vec![1, 2, 3],
vec![4, 5, 6],
vec![7, 8, 9],
];
let transposed_matrix = transpose(&matrix);
for row in transposed_matrix {
println!("{:?}", row);
}
}
Vec
)的向量(Vec<Vec<T>>
)。Vec<Vec<T>>
:表示一个二维数组,其中T
是元素的类型。transpose
函数接受一个二维数组的引用,并返回其转置后的二维数组。(0..col_len).map(|j| (0..row_len).map(|i| matrix[i][j]).collect())
来生成新的行向量。.collect()
将迭代器结果收集到一个新的二维数组中。通过这种方式,可以高效地在Rust中实现二维数组的转置操作。
领取专属 10元无门槛券
手把手带您无忧上云