Rust 简明教程

Rust 向量 (Vectors)

1. 向量 (Vectors)

向量(Vector)是一种大小可变的数组。与常规的固定长度数组不同,向量的尺寸可以动态地增长或缩小。

2. 创建一个向量

要创建一个向量,请使用 vec! 宏:

示例

let fruits = vec!["apple", "banana", "orange"];

这创建了一个包含三个字符串元素的向量。

3. 访问向量元素

您可以使用索引号来访问向量中的值(就像使用数组一样):

示例

let fruits = vec!["apple", "banana", "orange"];
println!("First fruit: {}", fruits[0]);

4. 更改向量的值

要更改向量中的值,请引用对应的索引号并赋予一个新值。

请记住,必须将向量声明为可变的(使用 mut 关键字):

示例

let mut fruits = vec!["apple", "banana", "orange"];
fruits[0] = "grape";
println!("New first fruit: {}", fruits[0]);

5. 向向量中添加元素

您可以使用 push() 方法向向量的末尾添加一个新元素:

示例

let mut fruits = vec!["apple", "banana"];
fruits.push("cherry");
println!("{:?}", fruits); // 输出:["apple", "banana", "cherry"]

6. 从向量中移除元素

要移除向量中的最后一个元素,请使用 pop() 方法:

示例

let mut fruits = vec!["apple", "banana", "cherry"];
fruits.pop();
println!("{:?}", fruits); // 输出:["apple", "banana"]

7. 在指定索引处添加或移除元素

Rust 向量在设计上主要用于在末尾进行增长和缩减,但您同样可以在开头或在指定的索引位置添加或移除元素。

使用 insert() 方法可以在指定的索引处添加项:

示例

在向量开头添加 "apple":

let mut fruits = vec!["banana", "orange"];
fruits.insert(0, "apple");
println!("{:?}", fruits); // 输出:["apple", "banana", "orange"]

示例

在向量中间添加 "apple":

let mut fruits = vec!["banana", "orange"];
fruits.insert(1, "apple");
println!("{:?}", fruits); // 输出:["banana", "apple", "orange"]

7.1 移除第一项

使用 remove() 方法可以从指定的索引处移除一个元素:

示例

移除向量中的第一项:

let mut fruits = vec!["apple", "banana", "orange"];
fruits.remove(0);
println!("{:?}", fruits); // 输出:["banana", "orange"]

注意: 从开头添加或移除元素的速度比在末尾操作要慢,因为所有的后续元素都必须相应地移动位置。

8. 向量的长度

您可以使用 .len() 方法找出向量中包含多少个元素:

示例

let fruits = vec!["apple", "banana", "cherry"];
println!("There are {} fruits.", fruits.len());

9. 遍历向量

就像数组一样,您可以使用 for 循环遍历向量中的所有值:

示例

let fruits = vec!["apple", "banana", "orange"];
for fruit in &fruits {
  println!("I like {}.", fruit);
}

注意: 使用 &fruits 以借用 (borrow) 的方式使用向量,而不是移动 (move) 它。

在 Rust 中,借用意味着使用对值的引用,而不是获取它的所有权。当你在不使用 & 的情况下遍历向量时,这些值将被“移出 (moved out)”,之后你将无法再次使用该向量。但如果您使用 & 借用该向量,你就可以在程序的后续部分继续使用它。