3.15.1 Vector(向量)

Rust 中的 Vector(向量)是一个动态的、可增长的数组,它可以存储一系列相同类型的元素。向量在连续的内存空间中存储元素,这使得访问和修改元素非常快。以下是有关 Rust 向量的一些详细信息:

1. 创建 Vector:

可以使用 Vec<T> 类型创建一个向量,其中 T 是存储在向量中的元素的类型。要创建一个新的空向量,可以使用 Vec::new() 方法。

#![allow(unused)]
fn main() {
let mut vec = Vec::new();
}

或者,可以使用宏 vec![] 初始化一个包含初始值的向量:

#![allow(unused)]
fn main() {
let vec = vec![1, 2, 3, 4, 5];
}

2. 添加元素:

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

#![allow(unused)]
fn main() {
vec.push(6);
}

3.访问元素:

可以通过索引访问向量中的元素,类似于数组。请注意,尝试访问无效索引可能导致运行时错误。

#![allow(unused)]
fn main() {
let first = vec[0]; // 访问向量中的第一个元素
}

或者,可以使用 get() 方法安全地访问元素,它返回一个 Option 类型。如果指定的索引有效,则返回 Some(element),否则返回 None

#![allow(unused)]
fn main() {
let first = vec.get(0); // 返回 Option<&T>
}

4. 遍历元素:

可以使用 for 循环遍历向量中的所有元素。

#![allow(unused)]
fn main() {
for element in &vec {
    println!("Element: {}", element);
}
}

5. 删除元素:

可以使用 remove() 方法删除向量中指定索引处的元素。此操作将删除元素并将后续元素向前移动。

#![allow(unused)]
fn main() {
vec.remove(0); // 删除向量中的第一个元素
}

6. Vector 的容量和长度:

向量的长度是其中的元素数量,而容量是为这些元素分配的内存空间。向量会根据需要自动增长,但当长度超过容量时,它需要重新分配内存并复制元素到新内存区域。可以使用 len() 获取向量的长度,使用 capacity() 获取容量,还可以使用 shrink_to_fit() 方法减小容量以匹配当前长度。

7. 切片:

切片是对向量一部分元素的引用,可以用作轻量级的视图。要创建切片,可以使用范围语法:

#![allow(unused)]
fn main() {
let slice = &vec[1..4]; // 创建一个包含索引 1 到 3(包括 1,不包括 4)的元素的切片
}

向量是 Rust 中使用非常广泛的集合类型,因为它提供了灵活性、性能和安全性。