Rust 程式設計中的向量
Rust 中的向量類似於可調整大小的陣列。它們用於儲存同類型的物件,並且連續儲存在記憶體中
與切片類似,它們的大小在編譯時未知,並且可以相應地增長或縮小。它在 Rust 中表示為 Vec<T>
儲存在向量中的資料是在堆中分配的。
示例
在下面的示例中,使用 Rust 提供的 Vec::new(); 函式建立了一個名為 d 的向量。
fn main() { let mut d: Vec = Vec::new(); d.push(10); d.push(11); println!("{:?}", d); d.pop(); println!("{:?}", d); }
我們使用 push() 函式將元素推入向量,並使用 pop() 函式移除元素。
輸出
[10, 11] [10]
Rust 還為我們提供了另一種建立向量的方法。我們可以使用 vec!宏 而不是 Vec::new() 函式。
示例
fn main() { let v = vec![1,2,3]; println!("{:?}",v); }
輸出
[1, 2, 3]
上面的向量不可變,如果我們嘗試更改其中一些值,我們將得到一個錯誤。
示例
fn main() { let v = vec![1,2,3]; println!("{:?}",v); v[0] = 99; println!("{:?}",v); }
輸出
| 4 | let v = vec![1,2,3]; | - help: consider changing this to be mutable: `mut v` 5 | println!("{:?}",v); 6 | v[0] = 99; | ^ cannot borrow as mutable
我們可以在正在定義的向量名稱前新增 mut 關鍵字使其可變。
示例
fn main() { let mut v = vec![1,2,3]; println!("{:?}",v); v[0] = 99; println!("{:?}",v); }
輸出
[1, 2, 3] [99, 2, 3]
最後,應記住,當向量的長度超過容量時,向量的容量將自動增加。
廣告