美文网首页程序员技术栈Rust语言程序员
Rust 从基础到实践(12)Vector

Rust 从基础到实践(12)Vector

作者: zidea | 来源:发表于2019-04-14 06:27 被阅读30次

//vectors


rust_logo.jpg

下面是创建一个 Vector 方法,我们也可以可以调用 Vect::new 方法来创建一个空的 Vector。

fn main(){
     let x = vec![1,2,3,4,5];
}

在 c++ 中的 vec 本质是模板,而在 Rust 中 Vector 是宏,有关宏的概念比较高级我们在以后内容来分享,这里大家需要了解到 vector 有两个参数表示 vector 的承载能力,一个是 Vector 的长度,一个是 Vector 扩展能力,所谓的扩展能力就是预留多少内存给 Vector 放置更多元素。

    let mut v = Vec::new();

    v.push(5);
    v.push(6);
    v.push(7);
    v.push(8);
    
    for i in &v {
        println!("{}",i)
    }

通过 push 方法可以往 v 中添加元素,我们遍历 Vector 来打印每一个元素。这里需要强调一下在 Vector 我们只能放置同一类型的元素。

v.push(10);
println!("{:?} {} {} ", &v, v.len(),v.capacity());

通过方法打印出 Vector 的长度和扩展能力,这里看到 Vector 的长度为 5 ,扩展能力为 8,

[5, 6, 7, 8, 10] 5 8

如果我们继续向 Vector 添加更多的元素,如果超出其承载能力,Vector 是按什么规律进行扩展的呢。我们可以尝试一下

v.push(10);
    v.push(12);
    v.push(13);
    v.push(15);
    v.push(16);
    v.push(17);
    v.push(18);

    println!("{:?} {} {} ", &v, v.len(),v.capacity());

可以看到现在扩展变成 16 ,这里 Vector 是按 2 倍数进行不断扩展的。

[5, 6, 7, 8, 10, 12, 13, 15, 16, 17, 18] 11 16

我们可以用 pop 方法来获取 Vector 的最后的元素

println!("{:?}",v.pop())

这里返回值 Some 进行一层包裹,这是可选值,我们将其解构来获取 18 这个值。
Rust 从基础到实践(15) Some

Some(18)
let mut v:Vec<i32> = Vec::new();

   
    for i in &v {
        println!("{}",i)
    }

   
    println!("{:?} {} {} ", &v, v.len(),v.capacity());

    println!("{:?}",v.pop())

在创建 Vector 我们可以为 Vector 指定类型,因为这里创建了一个空 Vector,所以长度和承载能力都为 0。

[] 0 0
None
#[derive(Debug)]
enum Example {
    Float(f64),
    Int(i32),
    Text(String),
}

fn main(){
    // let x = vec![1,2,3,4,5];

   let r = vec![
       Example::Int(120),
       Example::Float(12.12),
       Example::Text(String::from("hello"))
   ];

    println!("{:?}",&r)
}

因为枚举可以看做一种类型,所以 Vector 可以接收枚举元素来实现接收多种类型元素

[Int(120), Float(12.12), Text("hello")]

相关文章

网友评论

    本文标题:Rust 从基础到实践(12)Vector

    本文链接:https://www.haomeiwen.com/subject/ifxppqtx.html