| 散列表類型 | 有無關系值 | 接受相同鍵值 |
|---|---|---|
std::unordered_set |
否 | 否 |
std::unordered_multiset |
否 | 是 |
std::unordered_map |
是 | 否 |
std::unordered_multimap |
是 | 是 |
std::map和std::unordered_map區別:
std::map |
std::unordered_map |
|
|---|---|---|
| 頭文件 | #include <map> |
#include <unordered_map> |
| 內部實現 | map內部實現了一個紅黑樹,紅黑樹具有自動排序的功能,因此map內部的所有元素都是有序的,紅黑樹的每一個節點都代表着map的一個元素。 |
unordered_map內部實現了一個哈希表,其元素的排列順序是無序的,根據關鍵碼值而進行直接訪問的數據結構。 |
| 優點 | 有序性,在很多應用中都會簡化很多的操作,效率非常的高 | 查找速度非常的快 |
| 缺點 | 空間占用率高,因為紅黑樹每一個節點都需要額外保存父節點、孩子節點和紅/黑性質,使得每一個節點都占用大量的空間 | 哈希表的建立比較耗費時間 |
| 適用 | 有順序要求的問題 | 查找問題 |
unordered_map的占用的內存比map高, 但unordered_map執行效率要比map高很多 。
unordered_map的用法和map是一樣的,提供了 insert,size,count等操作,並且里面的元素也是以pair類型來存儲的。
