当前位置:   article > 正文

Rust学习教程32 - 动态数组Vec_rust 动态数组vec基本概念及其用法

rust 动态数组vec基本概念及其用法

本文节选自<<Rust语言圣经>>一书
欢迎大家加入Rust编程学院,一起学习交流:
QQ群:1009730433

动态数组Vector

动态数组类型用Vec<T>表示,事实上,在之前的章节,它的身影多次出现,我们一直没有细讲,只是简单的把它当作数组处理。

动态数组允许你存储多个值,这些值在内存中一个紧挨着另一个排列,因此访问其中某个元素的成本非常低。动态数组只能存储相同类型的元素,如果你想存储不同类型的元素,可以使用之前讲过的枚举类型或者特征对象.

总之,当我们想拥有一个列表,里面都是相同类型的数据时,动态数组将会非常有用。

创建动态数组

在Rust中,有多种方式可以创建动态数组。

Vec::new

使用Vec::new创建动态数组是最rusty的方式,它调用了Vec中的new关联函数:

let v: Vec<i32> = Vec::new();
  • 1

这里, v被显式地声明了类型Vec<i32>,这是因为Rust编译器无法从Vec::new()中得到任何关于类型的暗示信息,因此也无法推导出v的具体类型,但是当你向里面增加一个元素后,一切又不同了:

let mut v = Vec::new();
v.push(1);
  • 1
  • 2

此时,v就无需手动声明类型,因为编译器通过v.push(1),推测出v中的元素类型是i32,因此推导出v的类型是Vec<id3>.

vec![]

还可以使用宏vec!来创建数组,与Vec::new有所不同,前者能在创建同时给予初始化值:

let v = vec![1, 2, 3];
  • 1

同样,此处的v也无需标注类型,编译器只需检查它内部的元素即可自动推导出v的类型是Vec<i32>(Rust中,整数默认类型是i32,在数值类型中有详细介绍)。

更新Vector

向数组尾部添加元素,可以使用push方法:

let mut v = Vec::new();
v.push(1);
  • 1
  • 2

与其它类型一样,必须将v声明为mut后,才能进行修改,.

Vector与其元素共存亡

跟结构体一样,Vector类型在超出作用域范围后,会被自动删除:

{
   
    let v = vec![1, 2, 3];

    // ...
} // <- v超出作用域并在此处被删除
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Vector被删除后,它内部存储的所有内容也会随之被删除。目前来看,这种解决方案简单直白,但是当vector

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/528178
推荐阅读
  

闽ICP备14008679号