When it comes to efficiency, there is a huge difference between maps and unordered maps.
We must know the internal working of both to decide which one is to be used.
| map | unordered_map --------------------------------------------------------- Ordering | increasing order | no ordering | (by default) | Implementation | Self balancing BST | Hash Table | like Red-Black Tree | search time | log(n) | O(1) -> Average | | O(n) -> Worst Case Insertion time | log(n) + Rebalance | Same as search Deletion time | log(n) + Rebalance | Same as search
Use std::map when
- You need ordered data.
- You would have to print/access the data (in sorted order).
- You need predecessor/successor of elements.
- See advantages of BST over Hash Table for more cases.
1 : 1 3 : 5 5 : 10 20 : 100
Use std::unordered_map when
- You need to keep count of some data (Example – strings) and no ordering is required.
- You need single element access i.e. no traversal.
1 : 1 3 : 5 20 : 100 5 : 10
- Sum of array Elements without using loops and recursion
- Count pairs from two arrays having sum equal to K
- Count occurrences of the average of array elements with a given number
- Count pairs in an array such that frequency of one is at least value of other
- Check whether frequency of characters in a string makes Fibonacci Sequence
- Most frequent word in first String which is not present in second String
- Maximum score after flipping a Binary Matrix atmost K times
- String with frequency of characters in Lucas Sequence
- C++ Program to concatenate two strings using Operator Overloading
- Is there any equivalent to typedef of C/C++ in Java ?
- Array elements with prime frequencies
- Count elements in a vector that match a target value or condition
- Swapping of subranges from different containers in C++
- Replace every elements in the array by its frequency in the array
- Find the k smallest numbers after deleting given elements
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.