Z
ZHANK
编程在线教程Rust 教程集合类型 Vec/HashMap
复合类型

集合类型 Vec/HashMap

Vec 动态数组 push/pop、HashMap 插入/entry API、遍历

集合类型 Vec/HashMap

Vec<T> 是动态数组,HashMap<K,V> 是哈希表——Rust 最常用的两个集合。

学完本章你将: 掌握 Vec push/pop、HashMap 插入/entry API、遍历。


Vec

rust
fn main() {
    // 创建
    let mut v: Vec<i32> = Vec::new();
    let mut v2 = vec![1, 2, 3];  // vec! 宏

    // 增删
    v.push(1); v.push(2); v.push(3);
    let last = v.pop();  // Some(3)

    // 访问
    let third = &v[2];           // 越界会 panic
    let third = v.get(2);        // 返回 Option<&T>

    // 遍历
    for i in &v {
        println!("{}", i);
    }

    // 修改
    for i in &mut v {
        *i += 10;  // 解引用修改
    }
}

HashMap

rust
use std::collections::HashMap;

fn main() {
    let mut scores = HashMap::new();

    scores.insert(String::from("数学"), 92);
    scores.insert(String::from("语文"), 88);

    // entry API —— 只在不存在时插入
    scores.entry(String::from("英语")).or_insert(85);
    scores.entry(String::from("数学")).or_insert(0);  // 不覆盖 92

    // 访问
    let score = scores.get("数学");  // Some(&92)

    // 遍历
    for (key, value) in &scores {
        println!("{}: {}", key, value);
    }
}