15.rust集合库与迭代器

一、前言

基本的数据结构各种语言都会有自己的实现,rust也不例外。

在rust中,这些数据结构的实现被称作“集合”,被放置在了std::colections中。

内容并不算多,只有4个而已,个人认为Vec也应该算它的一部分,可能是因为其太过于常用,所以直接将其放在了全局,而没有放在该空间内。

至于迭代器,是所有集合所通用的方法,所以也会在本章对其进行讲解。

二、Vec

首先第一个便是用的最多的集合:Vec,也就是动态数组,它可以自动扩容。

初始化它的方式主要有三种:

    let v1: Vec<i32> = Vec::new();
    let v2: Vec<i32> = Vec::with_capacity(1000);
    let v3: Vec<i32> = vec![1, 2, 3];

第一种最常见,就是用new函数创建一个空的本实例。

第二种则是用于事先分配指定容量的数组示例,其内同样为空。

如果你事先知道这个数组里面最多存放指定个数的元素,那么使用第二种方式效率会更高,因为它就无需因空间不够导致重新分配内存、复制数据。

第三种使用vec提供的宏,通过指定元素直接生成带有数据的数组。

一般访问、修改直接用下标即可:

let mut v=vec![1,2,3];
let n=v[2];
v[1]=100;

只是需要注意一下,下标是从0开始的。

至于增加,由于是数组,一般推荐只从末尾追加,但你也可以在任意下标插入元素,只不过效率可能不够好:

fn main() {
    let mut v = vec![1, 2, 3];
    v.push(5); //末尾推入元素5
    v.insert(0, 6); //0号位置插入元素6
}

而删除元素,也有两种方式:

作者:余识
全部文章:0
会员文章:0
总阅读量:0
c/c++pythonrustJavaScriptwindowslinux