雜湊map和紅黑樹map比較

2021-10-01 20:55:31 字數 862 閱讀 9210

在資料量為幾百項時,紅黑樹map的優勢較大,但資料量偏大時,雜湊map檢索速度較快

紅黑樹map基於紅黑樹實現,每次檢索從頭開始檢索

雜湊map基於雜湊雜湊,大量資料檢索優勢大

c++11新特性:unordered_map和map的區別:

unordered_map和map類似,都是儲存的key-value的值,可以通過key快速索引到value。不同的是unordered_map不會根據key的大小進行排序,

儲存時是根據key的hash值判斷元素是否相同,即unordered_map內部元素是無序的,而map中的元素是按照二叉搜尋樹儲存,進行中序遍歷會得到有序遍歷。

所以使用時map的key需要定義operator<。而unordered_map需要定義hash_value函式並且過載operator==。但是很多系統內建的資料型別都自帶這些,

那麼如果是自定義型別,那麼就需要自己過載operator《或者hash_value()了。

結論:如果需要內部元素自動排序,使用map,不需要排序使用unordered_map

unordered_map的使用案列:

#include#include#includeusing namespace std;  

struct person

bool operator== (const person& p) const

};

size_t hash_value(const person& p)

int main()

return 0;

}

雜湊表和紅黑樹

hash,也可以稱為 雜湊 就是把任意長度的輸入,通過雜湊演算法,變換成固定長度的輸出,該輸出就是雜湊值。這是一種壓縮對映,也就是,雜湊值的空間通常遠小於輸入的空間,不同的輸入可能會雜湊成相同的輸出 也就是多對一的關係 在所有的線性資料結構中,陣列的定位速度最快,因為它可通過陣列下標直接定位到相應的...

STL中map和set底層的紅黑樹實現

我們都知道map和set的實現是依賴紅黑樹的 怎樣寫紅黑樹可以讓map和set都可以使用呢?在這裡我們定義了乙個模版引數,如果它是key那麼它就是set,如果它是map,那麼它就是map 我們分析一下,紅黑樹迭代器的前置 到當前結點,就說明了它的左子樹和自己都已經訪問過了 1,當前位置,若右樹不為空...

STL中map和set底層的紅黑樹實現

我們都知道map和set的實現是依賴紅黑樹的 怎樣寫紅黑樹可以讓map和set都可以使用呢?在這裡我們定義了乙個模版引數,如果它是key那麼它就是set,如果它是map,那麼它就是map 我們分析一下,紅黑樹迭代器的前置 到當前結點,就說明了它的左子樹和自己都已經訪問過了 1,當前位置,若右樹不為空...