计算机系统应用教程网站

网站首页 > 技术文章 正文

Rust 向量(Vec) rust {:?}

btikc 2024-10-18 04:37:14 技术文章 21 ℃ 0 评论

Rust 向量是一个长度可变的数组,它使用一段 连续的内存块 存储相同类型的元素。

Rust 向量与数组不同之处在于:向量的长度是可变的,可以在运行时增长或者缩短,而数组的长度是固定不变的。

Rust 向量以特定顺序(添加顺序)将数据存储为元素序列。

  • 元素添加到向量时会添加到向量的末尾。这个操作类似于 栈 ( stack ),因此可以用来实现 栈 的功能。
  • 向量的内存在 堆 ( heap ) 上存储,因此长度动态可变。

1. Rust 创建向量的语法

  • Rust 在标准库中定义了结构体 Vec 用于表示一个向量。
  • 同时提供了 new() 静态方法用于创建一个结构体 Vec 的实例。
fn main(){
    let mut vec_name = Vec::new();
}
  • 除了提供 new() 静态方法创建向量之外, Rust 标准库还提供了 vec!() 宏来简化向量的创建。
fn main(){
    let vec_name = vec![10,20,30];
}

2.操作向量和元素的方法

fn main(){
    // 操作向量和元素方法
    // 创建向量的一般通过调用 Vec 结构的 new() 静态方法来创建。
    let mut v = Vec::new();
    // 当有了向量的一个实例后,再通过 push() 方法像向量添加元素
    v.push(20);
    v.push(30);
    v.push(40);
    println!("size of vector is {}",v.len()); // len() 方法用于获取向量的元素个数
    println!("{:?}",v);
    // 输出
    // size of vector is 3
    // [20, 30, 40]

    // 使用 vec! 宏创建向量
    // 为了使创建向量看起来像创建数组那么简单
    // Rust 标准库提供了 vect! 用于简化向量的创建
    let v1 = vec![1,2,3];
    println!("{:?}",v1);
    // 输出:[1, 2, 3]

    // append 方法用于将一个向量拼接到另一个向量的尾部
    let mut vv1 = vec![2,4,6,8];
    let mut vv2 = vec![20,40,60];
    vv1.append(&mut vv2);
    println!("{:?}",vv1);
    // 输出:[2, 4, 6, 8, 20, 40, 60]
  
    // 删除向量中的某个元素 remove()
    let mut v2 = vec![10,20,30];
    v2.remove(1);
    println!("{:?}",v2);
    // 输出:[10, 30]

    // 判断向量是否包含某个元素
    // contains() 用于判断向量是否包含某个值。
    // 如果值在向量中存在则返回 true,否则返回 false。
    let v3 = vec![10,20,30];
    if v3.contains(&20){
        println!("found 20");
    }
    println!("{:?}",v3);
    // found 20    
    // [10, 20, 30]

    // 迭代/遍历向量
    // 可以直接使用 for in 语法来遍历向量
    let mut v4 = Vec::new();
    v4.push(15);
    v4.push(25);
    v4.push(35);
    for i in v4{
        println!("{}",i);
    }
    // 输出
    // 15
    // 25
    // 35
    // println!("{:?}",v4); 向量已经不可用会出错

    for j in &v4{
        println!("{}",j);
    }
    println!("{:?}",v4);
    // 输出
    // 15
    // 25
    // 35
    // [15, 25, 35]
}

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表