📜  rust 向后迭代向量 - Rust (1)

📅  最后修改于: 2023-12-03 14:47:10.588000             🧑  作者: Mango

Rust 向后迭代向量

在编程中,我们经常需要遍历集合中的元素。Rust 中的向量是一个常用的集合类型,它提供了实现迭代的方法。本文将介绍如何使用 Rust 向后迭代向量。

创建向量

首先,让我们创建一个向量。向量是一个可变长度的存储在堆上的数组。使用 Vec::new() 创建一个空向量,或者使用一些元素初始化向量:

let mut vec = Vec::new();
vec.push(1);
vec.push(2);
使用 iter() 方法迭代向量

为了创建一个向后的迭代器,我们可以使用 iter() 方法,该方法返回一个 std::slice::Iter 类型的迭代器。然后,我们可以使用 for 循环遍历向量中的元素。

for item in vec.iter() {
    println!("{}", item);
}

以上代码将打印:

1
2

iter() 方法返回的是一个不可变引用,因此我们不能修改向量中的元素或元素本身。

使用 iter_mut() 方法迭代向量

如果我们需要在迭代过程中修改向量中的元素,我们应该使用 iter_mut() 方法。该方法返回一个 std::slice::IterMut 类型的可变迭代器。

for item in vec.iter_mut() {
    *item *= 2;
}

iter_mut() 方法返回一个可变引用,因此我们可以修改向量中的元素。在上面的示例中,我们将向量中的每个元素都乘以 2。现在,向量包含的元素是 [2, 4]

使用 into_iter() 方法迭代向量

如果我们希望以向量的所有权的方式消耗向量,我们可以使用 into_iter() 方法,该方法返回一个 std::vec::IntoIter 类型的迭代器。

let vec = vec![1, 2];
for item in vec.into_iter() {
    println!("{}", item);
}

以上代码输出:

1
2

into_iter() 方法返回从向量中获取所有权的迭代器。因此,在迭代过程中迭代器将消耗向量并释放其内存。

使用 iter().rev() 方法迭代向量

如果我们需要以反向迭代向量,我们可以使用 iter().rev() 方法。该方法返回一个 std::slice::Iter 类型的迭代器,该迭代器以反向顺序遍历向量的元素。

for item in vec.iter().rev() {
    println!("{}", item);
}

以上代码将以反向顺序打印向量中的元素:

4
2
结论

这就是 Rust 向后迭代向量的基础知识。使用 iter()iter_mut()into_iter()iter().rev() 方法遍历和修改向量的元素是非常简单的。该向量迭代器提供了一种简单而灵活的方法,以便轻松地处理向量中的元素。