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]

最后,应记住,当向量的长度超过容量时,向量的容量将自动增加。

更新时间: 05-04-2021

364 次浏览

Kickstart 你的事业

通过完成课程获得认证

开始
广告