Rust 编程中的向量
Rust中的向量就像重新调整大小的数组。它们用于存储相同类型的对象并连续存储在内存中
像Slices一样,它们的大小在编译时是未知的,并且可以相应地增长或缩小。在Rust中用Vec
存储在向量中的数据在堆上分配。
示例
在下面的例子中,一个名为d的向量是使用Vec::new()创建的;Rust提供的功能。
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::new()函数,而是使用vec!宏。
示例
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]
最后要记住,只要向量的长度超过容量,向量的容量就会自动增加。