在Rust编程语言中,Vec 是一个可增长的可变数组,用于存储一系列元素。它属于Rust标准库提供的集合类型之一。Vec 是泛型的,这意味着它可以存储任何类型的数据。
Vec 通过宏 vec! 进行初始化,这个宏允许你轻松地创建一个包含初始元素的向量。使用 vec! 宏时,你可以在宏调用中直接指定初始元素。
下面是 Vec 和 vec! 宏的基本用法示例:
fn main() {
// 使用vec!宏创建一个包含初始元素的Vec
let v: Vec<i32> = vec![1, 2, 3, 4, 5];
// Vec的长度
println!("The length of the vector is: {}", v.len());
// 访问Vec中的元素
println!("The first element is: {}", v[0]);
println!("The second element is: {}", v[1]);
// 遍历Vec中的元素
for i in &v {
println!("{}", i);
}
// 可变的Vec,可以更改其元素
let mut m = vec![1, 2, 3];
m.push(4);
m.push(5);
println!("The modified vector is: {:?}", m);
}
在这个例子中:
-
vec![1, 2, 3, 4, 5];使用vec!宏创建了一个包含5个i32类型元素的Vec。 -
v.len()获取Vec的长度。 -
v[0]和v[1]通过索引访问Vec中的元素。 - 使用
for循环遍历Vec中的元素。 -
mut关键字用于声明一个可变的Vec,然后使用push方法向Vec添加新元素。
使用Vec和vec!宏时,需要记住的是: -
Vec在内存中是连续存储的。 -
Vec可以通过push方法添加元素,通过pop方法移除元素。 -
Vec的索引访问是快速的,但添加或删除元素可能会涉及重新分配内存和复制数据。 - 当使用索引访问
Vec时,需要确保索引是有效的,否则程序将会 panic。
Vec 的切片
fn main() {
let vec = vec![1, 2, 3, 4, 5];
let slice_of_vec = &vec[1..4]; // 包含索引1,不包含索引4
println!("Vec 切片: {:?}", slice_of_vec);
}