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]
最后要记住,只要向量的长度超过容量,向量的容量就会自动增加。