欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Rust語言中的哈希表

 更新時間:2024年02月18日 16:07:30   作者:名為逗比  
哈希表也是集合中的一種,也是最常用的集合形式,目前Rust語言核心部分沒有對哈希表進行實現(xiàn),是使用標準庫提供的,這篇文章主要介紹了Rust語言之哈希表,需要的朋友可以參考下

Rus設計語言官方教程

哈希表(Hash map)

哈希表也是集合中的一種,也是最常用的集合形式,目前Rust語言核心部分沒有對哈希表進行實現(xiàn),是使用標準庫提供的。

一、新建哈希表

fn main() {  
    use std::collections::HashMap;
    let mut scores = HashMap::new();
    scores.insert(String::from("Blue"), 10);
    scores.insert(String::from("Yellow"), 50);
    println!("{:?}",scores); //{"Yellow": 50, "Blue": 10}
}

二、訪問某個元素

索引訪問

fn main() {  
    use std::collections::HashMap;
    let mut scores = HashMap::new();
    scores.insert(String::from("Blue"), 10);
    scores.insert(String::from("Yellow"), 50);
    println!("value: {}",scores["Blue"]); // 10
}

GET方法

官方教程上的方法

fn main() {  
    use std::collections::HashMap;
    let mut scores = HashMap::new();
    scores.insert(String::from("Blue"), 10);
    scores.insert(String::from("Yellow"), 50);
    let team_name = String::from("Blue");
    let score = scores.get(&team_name).copied().unwrap_or(0);
    println!("value: {}",score); // 10
}

以上兩種方法都必須保證訪問的元素存在,否則會報錯

二、插入新元素

fn main() {  
    use std::collections::HashMap;
    let mut scores = HashMap::new();
    scores.insert(String::from("Blue"), 10);
    scores.insert(String::from("Yellow"), 50);
    println!("{:?}",scores); //{"Yellow": 50, "Blue": 10}
    scores.insert(String::from("Red"), 100);
    println!("{:?}",scores);// {"Red": 100, "Yellow": 50, "Blue": 10}
}

這里可以看出,哈希表中的元素是沒有順序的

三、遍歷哈希表

fn main() {  
    use std::collections::HashMap;
    let mut scores = HashMap::new();
    scores.insert(String::from("Blue"), 10);
    scores.insert(String::from("Yellow"), 50);
    for (key, value) in &scores {
        println!("{key}: {value}");
    }
}
=>
Yellow: 50
Blue: 10

四、檢查某個元素是否存在

Rust語言中檢查哈希表元素是否存在,有兩種方法,contains_key方法和entry

  • contains_key方法用于檢查HashMap中是否包含特定的鍵。它返回一個布爾值,指示鍵是否存在。
  • entry方法用于高效地處理鍵值對的插入和更新,它返回一個Entry枚舉,可以是Occupied(鍵已存在)或Vacant(鍵不存在)。

contains_key方法

fn main() {  
    use std::collections::HashMap;
    let mut scores = HashMap::new();
    scores.insert(String::from("Blue"), 10);
    scores.insert(String::from("Yellow"), 50);
    if scores.contains_key("Red"){
        println!("value :{}",scores["Red"]);
    }else {
        println!("Red is not found")
    }
}
=>Red is not found

entry方法

entry方法多用于對值的更新,eor_insert方法在鍵對應的值存在時就返回這個值的可變引用,如果不存在則將參數(shù)作為新值插入并返回新值的可變引用

fn main() {  
    use std::collections::HashMap;
    let mut scores = HashMap::new();
    scores.insert(String::from("Blue"), 10);
    scores.insert(String::from("Yellow"), 50);
    scores.entry(String::from("Red")).or_insert(100);
    scores.entry(String::from("Blue")).or_insert(50);
    println!("{:?}", scores);//{"Blue": 10, "Red": 100, "Yellow": 50}
}

五、元素更新

使用contains_key+insert 的方法

fn main() {  
    use std::collections::HashMap;
    let mut scores = HashMap::new();
    scores.insert(String::from("Blue"), 10);
    scores.insert(String::from("Yellow"), 50);
    let team_list =["Blue","Red"];
    for i in team_list{
        if scores.contains_key(i){
            scores.insert(i.to_string(), scores[i]+50);
        }else{
            scores.insert(i.to_string(), 50);
        }
    }
    println!("{:?}",scores);//{"Red": 50, "Blue": 60, "Yellow": 50}
}

使用entry方法

fn main() {  
    use std::collections::HashMap;
    let mut scores = HashMap::new();
    scores.insert(String::from("Blue"), 10);
    scores.insert(String::from("Yellow"), 50);
    let team_list =["Blue","Red"];
    for i in team_list{
        let count = scores.entry(i.to_string()).or_insert(0);
        *count += 50;
    }
    println!("{:?}",scores);//{"Red": 50, "Blue": 60, "Yellow": 50}
}

相比使用contains_key+insert 的方法,這種方法更優(yōu)雅。

六、刪除元素

fn main() {  
    use std::collections::HashMap;
    let mut scores = HashMap::new();
    scores.insert(String::from("Blue"), 10);
    scores.insert(String::from("Yellow"), 50);
    scores.insert(String::from("Red"), 80);
    println!("{:?}",scores);//{"Blue": 10, "Yellow": 50, "Red": 80}
    scores.remove("Red");
    println!("{:?}",scores);//{"Blue": 10, "Yellow": 50}
}

到此這篇關于Rust語言之哈希表的文章就介紹到這了,更多相關Rust哈希表內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 使用Rust語言管理Node.js版本

    使用Rust語言管理Node.js版本

    這篇文章主要介紹一個使用?Rust?進行編寫的一體化版本管理工具?Rtx,比如使用它來管理?Node.js?版本,它很簡單易用,使用了它,就可以拋棄掉?nvm?了,文中通過代碼示例給大家介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • Rust語言之Copy和Clone詳解

    Rust語言之Copy和Clone詳解

    在 Rust 中,Copy 和 Clone trait 用于控制類型的復制行為。它們允許你定義如何復制類型的值,以及在什么情況下可以復制。本文將詳細介紹這兩個 trait 的作用和用法,并通過代碼示例來展示它們的使用,需要的朋友可以參考下
    2023-05-05
  • Rust 原始指針功能探索

    Rust 原始指針功能探索

    這篇文章主要為大家介紹了Rust 原始指針功能探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • 深入探究在Rust中函數(shù)、方法和關聯(lián)函數(shù)有什么區(qū)別

    深入探究在Rust中函數(shù)、方法和關聯(lián)函數(shù)有什么區(qū)別

    在 Rust 中,函數(shù)、方法和關聯(lián)函數(shù)都是用來封裝行為的,它們之間的區(qū)別主要在于它們的定義和調用方式,本文將通過一個簡單的rust代碼示例來給大家講講Rust中函數(shù)、方法和關聯(lián)函數(shù)區(qū)別,需要的朋友可以參考下
    2023-08-08
  • Windows系統(tǒng)下安裝Rust環(huán)境超詳細教程

    Windows系統(tǒng)下安裝Rust環(huán)境超詳細教程

    這篇文章主要介紹了如何在Windows系統(tǒng)上安裝mingw64和Rust,mingw64是一個輕便的C語言編譯環(huán)境,可以替代Rust默認使用的Visual?Studio,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2025-02-02
  • 如何使用bindgen將C語言頭文件轉換為Rust接口代碼

    如何使用bindgen將C語言頭文件轉換為Rust接口代碼

    這篇文章主要介紹了使用bindgen將C語言頭文件轉換為Rust接口代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-01-01
  • 使用Rust語言編寫一個ChatGPT桌面應用示例詳解

    使用Rust語言編寫一個ChatGPT桌面應用示例詳解

    這篇文章主要介紹了如何用Rust編寫一個ChatGPT桌面應用,文中有詳細的流程介紹,對大家的學習或工作有意一定的幫助,需要的朋友可以參考下
    2023-05-05
  • rust流程控制的具體使用

    rust流程控制的具體使用

    在Rust中,控制流包括條件語句、循環(huán)和匹配模式等,用于實現(xiàn)程序的邏輯和流程控制,本文就來詳細的介紹一下,感興趣的可以了解一下
    2023-12-12
  • rust智能指針的具體使用

    rust智能指針的具體使用

    智能指針是一些數(shù)據結構,它們的行為類似于指針但擁有額外的元數(shù)據和附加功能,本文就來介紹一下rust智能指針的具體使用,感興趣的可以了解一下
    2023-12-12
  • Rust語言的新手了解和學習入門啟蒙教程

    Rust語言的新手了解和學習入門啟蒙教程

    這篇文章主要介紹了rust的特點、安裝、項目結構、IDE環(huán)境配置、代碼運行,講解了如何安裝Rust編譯器,創(chuàng)建和運行第一個Rust程序,并對Rust語言的特點和優(yōu)勢作了說明,包括內存安全、高效性能、并發(fā)性、社區(qū)支持和統(tǒng)一包管理等,是新手了解和學習Rust語言的啟蒙教程
    2024-12-12

最新評論