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 中使用非常广泛的集合类型,因为它提供了灵活性、性能和安全性。