C++ unordered_map(STL) 用法與範例
在 C++ 標準模板庫(STL)中,unordered_map 和 map 都是用於儲存鍵值對的容器,但它們在內部資料結構、效能和適用情境上有顯著差異。
unordered_map 是基於哈希表(hash table) 實現的,它使用哈希函數將鍵映射到數據儲存的桶(bucket) 中,每個 bucket 可以儲存一個或多個元素。由於是基於 hash table,元素不會按照任何特定順序儲存。unordered_map 在平均情況下,插入、刪除和查找操作的時間複雜度為 O(1),但在最壞情況下,如發生大量哈希碰撞,這些操作的時間複雜度可能退化到 O(n)。
相對地,map 通常基於紅黑樹實現,這是一種自平衡二元搜尋樹。map 儲存的元素按鍵的排序順序組織,使得元素始終處於排序狀態。因此,map 在插入、刪除和查找操作的時間複雜度穩定為 O(log n)。