c++ map和unordered_map比較
兩種結構都以鍵值對的形式儲存元素,並且提供成員函式來協助高效地插入,查詢和刪除鍵值對。
但是他們在以下的幾個方面有區別:
內部實現
記憶體使用
時間複雜度
內部實現
std::map將元素儲存在一個平衡二叉樹中,所以元素是有序儲存的。
std::unordered_map使用雜湊表來儲存元素,元素並不是有序儲存。
記憶體使用
unordered_map比ordered_map更佔用記憶體,因為需要額外的記憶體來儲存雜湊表。
查詢時間複雜度
std::map的查詢時間複雜度是O(log n)。
std::unordered_map最佳的查詢時間複雜度是O(1),如果雜湊函式不是很好的話,最糟糕的複雜度會是O(n)。
什麼時候選擇map:
當你需要低記憶體佔用率
當你希望序列是有序的
當你需要穩定的表現
什麼時候選擇unordered_map
當你有一個很好的雜湊函式和對記憶體佔用率沒有限制時
相關文章
- 關於c++ STL map 和 unordered_map 的效率的對比測試C++
- forEach、map、reduce比較
- map、unordered_map、set 和 unordered_set的小介紹
- Cpp學習 -- <unordered_map>
- Go 與 C++ 的對比和比較GoC++
- [C++] 自定義C++比較器比較大小C++
- C++宏和函式的比較C++函式
- 用struct做unordered_map的keyStruct
- unordered_map隨機底數種子隨機
- js 深比較和淺比較JS
- C與C++在函式和資料的比較C++函式
- Oracle date 型別比較和String比較Oracle型別
- 不能使用列舉類作為unordered_map鍵
- not in 和 not exists 比較和用法
- TCP和UDP比較TCPUDP
- Redis 和 Memcached 比較Redis
- Java和JavaSciprt比較Java
- etcd和redis比較Redis
- Go和Python比較的話,哪個比較好?GoPython
- C++與Rust變數宣告的比較C++Rust變數
- C++ - 比較兩個浮點數大小C++
- PyTorch和TensorFlow比較 - thegradientPyTorch
- ==和equals方法的比較
- ImageMagic 和 GraphicsMagick 的比較
- ArrayList和LinkedList的比較
- 比較器-Comparable和Comparator
- C++與Rust操作裸指標的比較C++Rust指標
- C++與Rust引用外部符號的比較C++Rust符號
- 關於c、c++之前比較模糊的概念C++
- c++ map用法C++
- map 對比
- 記一個關於std::unordered_map併發訪問的BUG
- 比較Windows和Linux SQL容器WindowsLinuxSQL
- Transformer和MoE架構比較ORM架構
- Java 中 Comparable 和 Comparator 比較Java
- TreeMap和HashMap的元素比較HashMap
- (轉貼) C++,C#,Java功能比較 (.NET) (C#) (C/C++)C++C#Java
- Java HashMap和Go map原始碼對比JavaHashMapGo原始碼