1. 程式人生 > >在PAT裡使用map還是unordered_map?

在PAT裡使用map還是unordered_map?

時間複雜度

O(?) map unordered_map
Ordering increasing order no ordering
Implementation Self balancing BST(Red-Black Tree) Hash Table
search time log(n) O(1) -> Average ,O(n) -> Worst Case
Insertion time log(n) + Rebalance O(1) -> Average ,O(n) -> Worst Case
Deletion time log(n) + Rebalance O(1) -> Average ,O(n) -> Worst Case



優缺點

耗時上:
map > unordered_map
記憶體上
map << unordered_map (遠大於)
排序上:
map的元素是有序的,unordered_map是無序的。如果你有元素有序的需求,那麼只能選擇map。
map是使用紅黑樹實現的。unordered_map是用hash實現的。所以你使用unordered_map是要給容器提供hash函式的,而hash函式影響了unordered_map的效能。對於基本資料型別:STL是提供了hash函式的(不需要新增).。如int,string等等。所以如果你要使用自己定義的型別:unordered_map是不能使用的。


結論

我還沒有遇到執行記憶體不足的題,但是超時的題一大堆。所以


在pat考試裡:儘量用unordered_map,而不是map。
在這裡插入圖片描述