日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Rust Map指南:深入理解、輕松應用

來源: 責編: 時間:2024-01-15 09:21:52 219觀看
導讀大家好,我是漁夫。今天我們來聊聊 Rust 中的map知識,在其他語言一樣,Map 通常指的是一種數據結構和一系列操作,用于將一組值映射到另一組值或執行某些操作,也就是我們常說的鍵值對。接下來一起探討 Rust 中map 的基本用法,

大家好,我是漁夫。moP28資訊網——每日最新資訊28at.com

今天我們來聊聊 Rust 中的map知識,在其他語言一樣,Map 通常指的是一種數據結構和一系列操作,用于將一組值映射到另一組值或執行某些操作,也就是我們常說的鍵值對。接下來一起探討 Rust 中map 的基本用法,和常見操作以及一些有用的技巧。moP28資訊網——每日最新資訊28at.com

moP28資訊網——每日最新資訊28at.com

什么是map?

在 Rust 中map是一種非常重要數據結構,和其他語言類似,也是一種鍵-值存儲的集合。它能夠允許你將一個鍵與一個值相關聯,然后就方便通過鍵來檢索值。下面是簡單例子,在 Rust中,map通常通過std::collections::HashMap來實現。moP28資訊網——每日最新資訊28at.com

use std::collections::HashMap;fn main() {    let mut scores = HashMap::new();    scores.insert("Alice", 100);    scores.insert("Bob", 90);    scores.insert("Charlie", 95);    let alice_score = scores.get("Alice");    match alice_score {        Some(score) => println!("Alice's score is: {}", score),        None => println!("Alice's score is not available."),    }}

運行結果:moP28資訊網——每日最新資訊28at.com

Alice's score is: 100[Done] exited with code=0 in 0.689 seconds

在上面的示例中,創建了一個名為scores的HashMap,并且將三個鍵值對插入其中。使用get方法來檢索 "Alice" 的分數。moP28資訊網——每日最新資訊28at.com

  • 其中 match alice_score { ... } ,作用是它用于匹配alice_score的值,并根據匹配結果執行不同的代碼塊。
  • Some(score) => println!("Alice's score is: {}", score):這是一個匹配分支。它檢查alice_score是否包含Some值。
  • None => println!("Alice's score is not available."):這是另一個匹配分支,用于處理alice_score為None的情況。

在 Rust 語言還是挺好用的這些匹配規則。moP28資訊網——每日最新資訊28at.com

基本操作

1.插入和更新值

如果你要向HashMap中插入新的鍵值對,可以使用insert方法。如果鍵已經存在,它將把值覆蓋掉。moP28資訊網——每日最新資訊28at.com

scores.insert("Alice", 105);  // 更新Alice的分數scores.insert("Eve", 80);      // 插入新的鍵值對

2.獲取值

要獲取HashMap中的值,可以使用get方法,和 Java 是不是很類似。如果鍵不存在,它會返回一個Option。moP28資訊網——每日最新資訊28at.com

// let alice_score = scores.get("test"); // 鍵不存在,將會打印出 Nonelet alice_score = scores.get("Alice");match alice_score {    Some(score) => println!("Alice's score is: {}", score),    None => println!("Alice's score is not available."),}

3.刪除值

還可以對HashMap中的鍵值對進行刪除操作,可以使用remove方法。moP28資訊網——每日最新資訊28at.com

scores.remove("Bob");

4.遍歷

除上面增刪改操作,還有一個重要的,如果遍歷HashMap中的所有鍵值,這里使用迭代器。moP28資訊網——每日最新資訊28at.com

use std::collections::HashMap;fn main() {    let mut scores = HashMap::new();    scores.insert("Alice", 100);    scores.insert("Bob", 90);    scores.insert("Charlie", 95);    scores.insert("Alice", 105);    // 遍歷    for (key, value) in &scores {        println!("{}: {}", key, value);    }}

遍歷結果:moP28資訊網——每日最新資訊28at.com

Charlie: 95Alice: 105Bob: 90[Done] exited with code=0 in 0.521 seconds

除了上面介紹的常見操作以外,其實HashMap還提供了許多有用的方法,比如查找鍵是否存在、獲取鍵的集合、獲取值的集合等等。這些方法在實際開發中,可以根據需要靈活使用,非常方便。moP28資訊網——每日最新資訊28at.com

5.默認值

首先,來看第一個,默認值,這個作用是如果鍵不存在,你可以使用entry方法來設置默認值。moP28資訊網——每日最新資訊28at.com

let charlie_score = scores.entry("Charlie").or_insert(0);

6.更新值

另外還可以使用entry方法來更新值,這就更加有意思了,可以讓你在在原有值的基礎上執行操作,用起來也是挺爽是不是。moP28資訊網——每日最新資訊28at.com

let bob_score = scores.entry("Bob").or_insert(0);*bob_score += 5;

7.排序

最后一個,如果需要按鍵或值對HashMap進行排序,你可以將它們提取到Vec中,然后使用sort方法來排序。moP28資訊網——每日最新資訊28at.com

let mut score_vec: Vec<(&str, &i32)> = scores.iter().collect();score_vec.sort_by(|a, b| b.1.cmp(a.1));  // 按值降序排序
  • scores.iter() 是使用HashMap的iter方法,返回一個迭代器,該迭代器可以用于遍歷HashMap中的鍵值對。
  • collect方法,作用是將迭代器中的元素收集到一個容器中,這里是將鍵值對收集到了score_vec向量中。

然后現在score_vec向量包含了HashMap中的鍵值對,然后使用sort_by方法來排序向量中的元素。其實就是通過一個閉包完成的,該閉包接受兩個參數a和b,它們分別代表向量中的兩個元素,每個元素都是一個包含鍵和值的元組。moP28資訊網——每日最新資訊28at.com

元素比較使用cmp方法,它返回一個排序順序,對于整數的話,它可以是Ordering::Less、Ordering::Equal或Ordering::Greater,分別表示“小于”、“等于”或“大于”這樣比較。moP28資訊網——每日最新資訊28at.com

最后

總結, Rust 中的HashMap是一個強大的數據結構,用于存儲和操作鍵值對。今天主要介紹常規用法、常見操作和一些技巧,希望對你有所幫助。moP28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-60985-0.htmlRust Map指南:深入理解、輕松應用

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 使用Python、OpenCV和Pyzbar實時攝像頭識別二維碼!

下一篇: 圖片識別無須借助外包API,使用這兩個強大的Python庫也能實現

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 武安市| 厦门市| 天全县| 龙陵县| 宁远县| 泸定县| 滨州市| 中江县| 利川市| 静安区| 秦皇岛市| 沙河市| 凤翔县| 东莞市| 肥东县| 沙湾县| 合川市| 长子县| 土默特右旗| 东丽区| 永福县| 沙湾县| 合作市| 淳化县| 白银市| 沛县| 隆尧县| 鞍山市| 静海县| 楚雄市| 郁南县| 禹城市| 林州市| 赣榆县| 阳东县| 遂宁市| 招远市| 凤庆县| 南宫市| 岑溪市| 望都县|