本文主要是介绍关于std::unsorted_map和std::map,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一. 前言
本文总结std库中unsorted_map和map的区别。
二. 区别示意图
map | unordered_map | |
---|---|---|
Ordering | increasing order ( by default ) | no ordering |
Implementation | Self balancing BST ( like RBT ) | Hash Table |
Search Time | log(n) | average O(1), worst O(n) |
Insertion Time | log(n) + Rebalance | Same as search |
Deletion Time | log(n) + Rebalance | Same as search |
由上表可见,unsorted_map即为哈希表,而map则是自平衡树,类似于红黑树的实现。所以二者的区别也即是哈希表和红黑树的区别。
三. 使用时机
在以下场景使用std::map更优:
- 当需要排序数据
- 当需要顺序打印、访问数据
- 当需要找数据的前后项的时候
相反的,在以下场合更适宜使用std::unsorted_map
- 不需要数据排序
- 需要统计数据或对增删有严格时间要求
- 需要快速访问单个元素
这篇关于关于std::unsorted_map和std::map的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!