推荐答案
在 Rust 中,Vec 是一个动态数组,提供了许多常用的方法来操作和管理其中的元素。以下是一些常用的 Vec 方法:
new()- 创建一个空的Vec。with_capacity(capacity: usize)- 创建一个具有指定容量的Vec。push(value: T)- 在Vec的末尾添加一个元素。pop() -> Option<T>- 移除并返回Vec的最后一个元素。len() -> usize- 返回Vec中元素的数量。is_empty() -> bool- 检查Vec是否为空。get(index: usize) -> Option<&T>- 获取指定索引处的元素的引用。get_mut(index: usize) -> Option<&mut T>- 获取指定索引处的元素的可变引用。insert(index: usize, element: T)- 在指定索引处插入一个元素。remove(index: usize) -> T- 移除并返回指定索引处的元素。clear()- 清空Vec中的所有元素。contains(&value: &T) -> bool- 检查Vec是否包含指定的值。sort()- 对Vec中的元素进行排序。drain(range: R) -> Drain<T>- 移除指定范围内的元素并返回一个迭代器。extend(iter: impl IntoIterator<Item = T>)- 将迭代器中的元素添加到Vec的末尾。
本题详细解读
new()
new() 方法用于创建一个空的 Vec。由于 Vec 是动态数组,初始时没有分配任何内存。
let v: Vec<i32> = Vec::new();
with_capacity(capacity: usize)
with_capacity 方法创建一个具有指定容量的 Vec。这可以避免在添加元素时频繁重新分配内存。
let v: Vec<i32> = Vec::with_capacity(10);
push(value: T)
push 方法在 Vec 的末尾添加一个元素。如果 Vec 的容量不足,会自动扩容。
let mut v = Vec::new(); v.push(1); v.push(2);
pop() -> Option<T>
pop 方法移除并返回 Vec 的最后一个元素。如果 Vec 为空,则返回 None。
let mut v = vec![1, 2, 3]; let last = v.pop(); // last = Some(3)
len() -> usize
len 方法返回 Vec 中元素的数量。
let v = vec![1, 2, 3]; let length = v.len(); // length = 3
is_empty() -> bool
is_empty 方法检查 Vec 是否为空。
let v: Vec<i32> = Vec::new(); let is_empty = v.is_empty(); // is_empty = true
get(index: usize) -> Option<&T>
get 方法获取指定索引处的元素的引用。如果索引超出范围,则返回 None。
let v = vec![1, 2, 3]; let element = v.get(1); // element = Some(&2)
get_mut(index: usize) -> Option<&mut T>
get_mut 方法获取指定索引处的元素的可变引用。如果索引超出范围,则返回 None。
let mut v = vec![1, 2, 3];
if let Some(element) = v.get_mut(1) {
*element = 5;
}insert(index: usize, element: T)
insert 方法在指定索引处插入一个元素。插入点之后的元素会向后移动。
let mut v = vec![1, 2, 3]; v.insert(1, 4); // v = [1, 4, 2, 3]
remove(index: usize) -> T
remove 方法移除并返回指定索引处的元素。移除点之后的元素会向前移动。
let mut v = vec![1, 2, 3]; let removed = v.remove(1); // removed = 2, v = [1, 3]
clear()
clear 方法清空 Vec 中的所有元素,但不释放内存。
let mut v = vec![1, 2, 3]; v.clear(); // v = []
contains(&value: &T) -> bool
contains 方法检查 Vec 是否包含指定的值。
let v = vec![1, 2, 3]; let contains = v.contains(&2); // contains = true
sort()
sort 方法对 Vec 中的元素进行排序。
let mut v = vec![3, 1, 2]; v.sort(); // v = [1, 2, 3]
drain(range: R) -> Drain<T>
drain 方法移除指定范围内的元素并返回一个迭代器。
let mut v = vec![1, 2, 3, 4, 5]; let drained: Vec<_> = v.drain(1..3).collect(); // drained = [2, 3], v = [1, 4, 5]
extend(iter: impl IntoIterator<Item = T>)
extend 方法将迭代器中的元素添加到 Vec 的末尾。
let mut v = vec![1, 2, 3]; v.extend([4, 5].iter().cloned()); // v = [1, 2, 3, 4, 5]