AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁(yè) > 科技  > 軟件

Rust Map指南:深入理解、輕松應(yīng)用

來(lái)源: 責(zé)編: 時(shí)間:2024-01-15 09:21:52 238觀看
導(dǎo)讀大家好,我是漁夫。今天我們來(lái)聊聊 Rust 中的map知識(shí),在其他語(yǔ)言一樣,Map 通常指的是一種數(shù)據(jù)結(jié)構(gòu)和一系列操作,用于將一組值映射到另一組值或執(zhí)行某些操作,也就是我們常說(shuō)的鍵值對(duì)。接下來(lái)一起探討 Rust 中map 的基本用法,

大家好,我是漁夫。ufY28資訊網(wǎng)——每日最新資訊28at.com

今天我們來(lái)聊聊 Rust 中的map知識(shí),在其他語(yǔ)言一樣,Map 通常指的是一種數(shù)據(jù)結(jié)構(gòu)和一系列操作,用于將一組值映射到另一組值或執(zhí)行某些操作,也就是我們常說(shuō)的鍵值對(duì)。接下來(lái)一起探討 Rust 中map 的基本用法,和常見(jiàn)操作以及一些有用的技巧。ufY28資訊網(wǎng)——每日最新資訊28at.com

ufY28資訊網(wǎng)——每日最新資訊28at.com

什么是map?

在 Rust 中map是一種非常重要數(shù)據(jù)結(jié)構(gòu),和其他語(yǔ)言類(lèi)似,也是一種鍵-值存儲(chǔ)的集合。它能夠允許你將一個(gè)鍵與一個(gè)值相關(guān)聯(lián),然后就方便通過(guò)鍵來(lái)檢索值。下面是簡(jiǎn)單例子,在 Rust中,map通常通過(guò)std::collections::HashMap來(lái)實(shí)現(xiàn)。ufY28資訊網(wǎng)——每日最新資訊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."),    }}

運(yùn)行結(jié)果:ufY28資訊網(wǎng)——每日最新資訊28at.com

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

在上面的示例中,創(chuàng)建了一個(gè)名為scores的HashMap,并且將三個(gè)鍵值對(duì)插入其中。使用get方法來(lái)檢索 "Alice" 的分?jǐn)?shù)。ufY28資訊網(wǎng)——每日最新資訊28at.com

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

在 Rust 語(yǔ)言還是挺好用的這些匹配規(guī)則。ufY28資訊網(wǎng)——每日最新資訊28at.com

基本操作

1.插入和更新值

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

scores.insert("Alice", 105);  // 更新Alice的分?jǐn)?shù)scores.insert("Eve", 80);      // 插入新的鍵值對(duì)

2.獲取值

要獲取HashMap中的值,可以使用get方法,和 Java 是不是很類(lèi)似。如果鍵不存在,它會(huì)返回一個(gè)Option。ufY28資訊網(wǎng)——每日最新資訊28at.com

// let alice_score = scores.get("test"); // 鍵不存在,將會(huì)打印出 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.刪除值

還可以對(duì)HashMap中的鍵值對(duì)進(jìn)行刪除操作,可以使用remove方法。ufY28資訊網(wǎng)——每日最新資訊28at.com

scores.remove("Bob");

4.遍歷

除上面增刪改操作,還有一個(gè)重要的,如果遍歷HashMap中的所有鍵值,這里使用迭代器。ufY28資訊網(wǎng)——每日最新資訊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);    }}

遍歷結(jié)果:ufY28資訊網(wǎng)——每日最新資訊28at.com

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

除了上面介紹的常見(jiàn)操作以外,其實(shí)HashMap還提供了許多有用的方法,比如查找鍵是否存在、獲取鍵的集合、獲取值的集合等等。這些方法在實(shí)際開(kāi)發(fā)中,可以根據(jù)需要靈活使用,非常方便。ufY28資訊網(wǎng)——每日最新資訊28at.com

5.默認(rèn)值

首先,來(lái)看第一個(gè),默認(rèn)值,這個(gè)作用是如果鍵不存在,你可以使用entry方法來(lái)設(shè)置默認(rèn)值。ufY28資訊網(wǎng)——每日最新資訊28at.com

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

6.更新值

另外還可以使用entry方法來(lái)更新值,這就更加有意思了,可以讓你在在原有值的基礎(chǔ)上執(zhí)行操作,用起來(lái)也是挺爽是不是。ufY28資訊網(wǎng)——每日最新資訊28at.com

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

7.排序

最后一個(gè),如果需要按鍵或值對(duì)HashMap進(jìn)行排序,你可以將它們提取到Vec中,然后使用sort方法來(lái)排序。ufY28資訊網(wǎng)——每日最新資訊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方法,返回一個(gè)迭代器,該迭代器可以用于遍歷HashMap中的鍵值對(duì)。
  • collect方法,作用是將迭代器中的元素收集到一個(gè)容器中,這里是將鍵值對(duì)收集到了score_vec向量中。

然后現(xiàn)在score_vec向量包含了HashMap中的鍵值對(duì),然后使用sort_by方法來(lái)排序向量中的元素。其實(shí)就是通過(guò)一個(gè)閉包完成的,該閉包接受兩個(gè)參數(shù)a和b,它們分別代表向量中的兩個(gè)元素,每個(gè)元素都是一個(gè)包含鍵和值的元組。ufY28資訊網(wǎng)——每日最新資訊28at.com

元素比較使用cmp方法,它返回一個(gè)排序順序,對(duì)于整數(shù)的話(huà),它可以是Ordering::Less、Ordering::Equal或Ordering::Greater,分別表示“小于”、“等于”或“大于”這樣比較。ufY28資訊網(wǎng)——每日最新資訊28at.com

最后

總結(jié), Rust 中的HashMap是一個(gè)強(qiáng)大的數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)和操作鍵值對(duì)。今天主要介紹常規(guī)用法、常見(jiàn)操作和一些技巧,希望對(duì)你有所幫助。ufY28資訊網(wǎng)——每日最新資訊28at.com

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

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

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

下一篇: 圖片識(shí)別無(wú)須借助外包API,使用這兩個(gè)強(qiáng)大的Python庫(kù)也能實(shí)現(xiàn)

標(biāo)簽:
  • 熱門(mén)焦點(diǎn)
  • 石頭智能洗地機(jī)A10 Plus體驗(yàn):雙向自清潔治好了我的懶癌

    一、前言和介紹專(zhuān)為家庭請(qǐng)假懶人而生的石頭科技在近日又帶來(lái)了自己的全新旗艦新品,石頭智能洗地機(jī)A10 Plus。從這個(gè)產(chǎn)品名上就不難看出,這次石頭推出的并不是常見(jiàn)的掃地機(jī)器
  • 讓我們一起聊聊文件的操作

    文件【1】文件是什么?文件是保存數(shù)據(jù)的地方,是數(shù)據(jù)源的一種,比如大家經(jīng)常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數(shù)據(jù),它既可以保
  • 微信語(yǔ)音大揭秘:為什么禁止轉(zhuǎn)發(fā)?

    大家好,我是你們的小米。今天,我要和大家聊一個(gè)有趣的話(huà)題:為什么微信語(yǔ)音不可以轉(zhuǎn)發(fā)?這是一個(gè)我們經(jīng)常在日常使用中遇到的問(wèn)題,也是一個(gè)讓很多人好奇的問(wèn)題。讓我們一起來(lái)揭開(kāi)這
  • 一文掌握 Golang 模糊測(cè)試(Fuzz Testing)

    模糊測(cè)試(Fuzz Testing)模糊測(cè)試(Fuzz Testing)是通過(guò)向目標(biāo)系統(tǒng)提供非預(yù)期的輸入并監(jiān)視異常結(jié)果來(lái)發(fā)現(xiàn)軟件漏洞的方法。可以用來(lái)發(fā)現(xiàn)應(yīng)用程序、操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議等中的漏洞或
  • 共享單車(chē)的故事講到哪了?

    來(lái)源丨海克財(cái)經(jīng)與共享充電寶相差不多,共享單車(chē)已很久沒(méi)有被國(guó)內(nèi)熱點(diǎn)新聞關(guān)照到了。除了一再漲價(jià)和用戶(hù)直呼用不起了。近日多家媒體再發(fā)報(bào)道稱(chēng),成都、天津、鄭州等地多個(gè)共享單
  • 花7萬(wàn)退貨退款無(wú)門(mén):誰(shuí)在縱容淘寶珠寶商家造假?

    來(lái)源:極點(diǎn)商業(yè)作者:楊銘在淘寶購(gòu)買(mǎi)珠寶玉石后,因?yàn)楸WC金不夠賠付,店鋪關(guān)閉,退貨退款難、維權(quán)無(wú)門(mén)的比比皆是。&ldquo;提供相關(guān)產(chǎn)品鑒定證書(shū),支持全國(guó)復(fù)檢,可以30天無(wú)理由退換貨。&
  • 信通院:小米、華為等11家應(yīng)用商店基本完成APP簽名及驗(yàn)簽工作

    中國(guó)信通院表示,目前,小米、華為、OPPO、vivo、360手機(jī)助手、百度手機(jī)助手、應(yīng)用寶、豌豆莢和努比亞等9家應(yīng)用商店,以及抖音和快手2家新型應(yīng)用分發(fā)平
  • 三星顯示已開(kāi)始為AR設(shè)備研發(fā)硅基LED微顯示屏

    7月18日消息,據(jù)外媒報(bào)道,隨著蘋(píng)果首款頭顯產(chǎn)品Vision Pro在6月份正式推出,AR/VR/MR等頭顯產(chǎn)品也就將成為各大公司下一個(gè)重要的競(jìng)爭(zhēng)領(lǐng)域,對(duì)顯示屏這一關(guān)
  • iQOO Neo8 Pro搶先上架:首發(fā)天璣9200+ 安卓性能之王

    經(jīng)過(guò)了一段時(shí)間的密集爆料,昨日iQOO官方如期對(duì)外宣布:將于5月23日推出全新的iQOO Neo8系列新品,官方稱(chēng)這是一款擁有旗艦級(jí)性能調(diào)校的作品。隨著發(fā)布時(shí)
Top