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)”,之后你将无法再次使用该向量。但如果您使用 & 借用该向量,你就可以在程序的后续部分继续使用它。