在Rust編程語言中,Vec 是一個可增長的可變數組,用于存儲一系列元素。它屬于Rust標準庫提供的集合類型之一。Vec 是泛型的,這意味著它可以存儲任何類型的數據。
Vec 通過宏 vec! 進行初始化,這個宏允許你輕松地創(chuàng)建一個包含初始元素的向量。使用 vec! 宏時,你可以在宏調用中直接指定初始元素。
下面是 Vec 和 vec! 宏的基本用法示例:
fn main() {
// 使用vec!宏創(chuàng)建一個包含初始元素的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!宏創(chuàng)建了一個包含5個i32類型元素的Vec。 -
v.len()獲取Vec的長度。 -
v[0]和v[1]通過索引訪問Vec中的元素。 - 使用
for循環(huán)遍歷Vec中的元素。 -
mut關鍵字用于聲明一個可變的Vec,然后使用push方法向Vec添加新元素。
使用Vec和vec!宏時,需要記住的是: -
Vec在內存中是連續(xù)存儲的。 -
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);
}