📅  最后修改于: 2023-12-03 14:47:10.588000             🧑  作者: Mango
在编程中,我们经常需要遍历集合中的元素。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()
方法遍历和修改向量的元素是非常简单的。该向量迭代器提供了一种简单而灵活的方法,以便轻松地处理向量中的元素。