Skip to content

Latest commit

 

History

History
16 lines (8 loc) · 1.17 KB

map和unordered_map.md

File metadata and controls

16 lines (8 loc) · 1.17 KB

map 和 unordered_map 的区别

  1. map

    map是基于红黑树实现。红黑树作为一种自平衡二叉树,保障了良好的最坏情况运行时间,即它可以做到在O(log n)时间内完成查找,插入和删除,在对单次时间敏感的场景下比较建议使用map做为容器。比如实时应用,可以保证最坏情况的运行时间也在预期之内。

    另红黑树是一种二叉查找树,二叉查找树一个重要的性质是有序,且中序遍历时取出的元素是有序的。对于一些需要用到有序性的应用场景,应使用map。

  2. unordered_map

    unordered_map是基于hash_table实现,一般是由一个大vector,vector元素节点可挂接链表来解决冲突来实现。hash_table最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的情况下,用空间换时间的做法是值得的

二者的应用场景:

在需要有序性或者对单次查询有时间要求的应用场景下,应使用map,其余情况应使用unordered_map。