Rust vector容器

Rust 第11节 Vector

原型:

    Vec<T>
由标准库提供;
由多个类型一致的值组成;
在内存中连续存放

1、创建

创建Vector

  • 1)使用函数
    Vec::new();
let mut v : Vec<i32> = Vec::new(); //创建一个空Vector
  • 2)使用宏直接创建
let mut v2 = vec![11,22,33,44];

2、向Vec中添加数据

    //向Vector中添加新元素
    v.push(12);
    v2.push(121);

    //当vector离开它的作用域后,他会被清理掉,它内部的元素都会被清理掉

3、获取Vec中的数据

  • 1、索引法
let m = v[0];    //当数组越界时,程序在运行时会panick
  • 2、get方法
    get()方法 返回的类型为 option
let x = v2.get(2);//x为一个option类型
match  x {
        Some(data) => println!("data is {}",data),
        None => println!("error"),     //当数组越界时,程序会走到这里,程序不会崩溃
    }

    if let Some(buff) = v2.get(0) {
        println!("some is {}",buff);
    }

4、引用问题

可变引用和不可变引用的规则同样适用vector,需要注意

下列代码会报错,不能同时存在一个可变引用和一个不可变引用;

let mut vx = vec![1,2,3,4];
    let tmp = &vx[0]; // 不可变引用
    vx.push(12); //可变引用,该行会报错;同时存在了可变引用和不可变引用
    println!("vx[0] = {}",tmp); //不可变引用

    //为何往vector最后增加数据,会影响vector0的引用呢: vector是连续的存储;如果在push时,空间不够,
    //那么就会在内存中找一块大的内存放置数据;原来的内存空间就失效了;那么使用索引获取数据那行就会出现问题;

5、遍历

//遍历 vector
    let s1 = vec![1,2,3,4,5,6,7];
    for i in &s1 { //使用它的不可比变引用
        print!(" {}",i);
    }

    //使用可变引用,遍历并改变数据

    let mut s2 = vec![1,2,3,4,5,6,7];
    for i in & mut s2 {
        *i += 100;//这里要解引用...
    }

    for i in &s2 {
        println!(" {}",i);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值