首頁 資訊 C++ map與unordered

C++ map與unordered

來源:泰然健康網(wǎng) 時(shí)間:2025年07月25日 00:33

map與unordered_map對(duì)比

map unordered_map 紅黑樹(非嚴(yán)格二叉平衡搜索樹)實(shí)現(xiàn) 哈希表實(shí)現(xiàn) 有序 無序 —— 查找時(shí)間復(fù)雜度為O(1),非???/strong> 空間消耗較大 空間消耗較大

哈希表(hash table)

定義

hash函數(shù)(即散列函數(shù))把key映射到對(duì)應(yīng)value在數(shù)組(即散列表,注:是一塊連續(xù)空間)中的位置。
即:value的存儲(chǔ)位置=f(key)
其中key為任意長(zhǎng)度,而散列表的長(zhǎng)度固定,即這種轉(zhuǎn)換是一種壓縮映射。

實(shí)現(xiàn)

最常用拉鏈法,連續(xù)的數(shù)組空間,數(shù)組每一個(gè)元素是一個(gè)鏈表的頭指針。根據(jù)元素的一些特征把元素分配到不同的鏈表中去。
充分利用了數(shù)組和鏈表的優(yōu)點(diǎn):
數(shù)組的特點(diǎn)是:尋址容易,插入和刪除困難;
而鏈表的特點(diǎn)是:尋址困難,插入和刪除容易。

特點(diǎn)

查找快

紅黑樹

特點(diǎn)

(1)每個(gè)節(jié)點(diǎn)或者是黑色,或者是紅色。
(2)根節(jié)點(diǎn)是黑色。
(3)每個(gè)葉子節(jié)點(diǎn)(NIL)是黑色。
(4)如果一個(gè)節(jié)點(diǎn)是紅色的,則它的子節(jié)點(diǎn)必須是黑色的。
(5)從一個(gè)節(jié)點(diǎn)到該節(jié)點(diǎn)的子孫節(jié)點(diǎn)的所有路徑上包含相同數(shù)目的黑節(jié)點(diǎn)。

這些約束強(qiáng)制了紅黑樹的關(guān)鍵性質(zhì): 從根到葉子的最長(zhǎng)的可能路徑不多于最短的可能路徑的兩倍長(zhǎng)(紅黑樹是相對(duì)是接近平衡的二叉樹)。
因?yàn)樾再|(zhì)4導(dǎo)致了路徑不能有兩個(gè)毗連的紅色節(jié)點(diǎn)。最短的可能路徑都是黑色節(jié)點(diǎn),最長(zhǎng)的可能路徑有交替的紅色和黑色節(jié)點(diǎn)。
又因?yàn)楦鶕?jù)性質(zhì)5所有最長(zhǎng)的路徑都有相同數(shù)目的黑色節(jié)點(diǎn),所以沒有路徑能多于任何其他路徑的兩倍長(zhǎng)。

故而這個(gè)樹大致上是平衡的。因?yàn)椴迦?、刪除和查找操作最壞情況時(shí)間都要求與樹的高度成比例,這個(gè)在高度上的理論上限允許紅黑樹在最壞情況下都是高效的,而不同于普通的二叉查找樹。

時(shí)間復(fù)雜度

O(lgn)

紅黑樹的基本操作--左旋和右旋

紅黑樹的基本操作有添加、刪除,添加、刪除后都要有旋轉(zhuǎn)操作,目的是維持紅黑樹的特性。
左旋:

對(duì)x進(jìn)行左旋,指將x右孩子y替換x原位置,將x作為y的新左孩子,將y的原左孩子作為x的右孩子?!皒變?yōu)榱俗蠊?jié)點(diǎn)”
右旋:
對(duì)x進(jìn)行右旋,指將x孩子y替換x原位置,將x作為y的新孩子,將y的原孩子作為x的孩子?!皒變?yōu)榱擞夜?jié)點(diǎn)”

旋轉(zhuǎn)操作保持一顆二叉搜索樹仍是二叉搜索樹。

未完待續(xù)

reference:

https://blog.csdn.net/BillCYJ/article/details/78985895
https://blog.csdn.net/duan19920101/article/details/51579136
https://www.cnblogs.com/skywang12345/p/3245399.html
https://baike.baidu.com/item/紅黑樹/2413209?fr=aladdin

相關(guān)知識(shí)

〝正和〞祛脂微粒膠囊200公絲的功效、成分、用法與用量
基于微信小程序的遠(yuǎn)程家庭健康監(jiān)測(cè)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
基于SSM實(shí)現(xiàn)個(gè)性化健康飲食推薦系統(tǒng)
青少年的不健康時(shí)間營(yíng)養(yǎng)行為具有聚集性及其對(duì)心血管代謝風(fēng)險(xiǎn)的聯(lián)合影響
詳解R語言中生存分析模型與時(shí)間依賴性ROC曲線可視化
【神麻人智】基于決策樹的機(jī)器學(xué)習(xí)分析術(shù)中使用血管升壓藥優(yōu)化急性脊髓損傷的神經(jīng)功能改善
左旋維C與維生素C的區(qū)別
新加坡健康美食推薦
Unit 3 Keep Fit 第4課時(shí) Section B (1a
心臟康復(fù)網(wǎng) 基于“醫(yī)院

網(wǎng)址: C++ map與unordered http://m.u1s5d6.cn/newsview1597412.html

推薦資訊