30、map 和 unordered_map的区别和实现机制【高频】

底层结构

  • map底层是红黑树结构,而unordered_map底层是哈希结构;

有序性

  • 但是红黑树其实是一种二叉搜索树,插入删除时会自动排序
  • hash因为是把数据映射到数组上的,而且存在哈希冲突,所以不能保证有序存储

所以有序存储使用map(红黑树的中序遍历,就能把储存的数据从小到大把数据按序展现出来)

查找

  • 为了查找,红黑树需要依次比较 关键码,时间复杂度为logn,还要加上平衡节点旋转的时间

  • 虽然说哈希表的内存 消耗远大于红黑树,但是因为哈希表增删查改时是直接映射到数组上的,时间复杂度为O(1)

你可能感兴趣的:(桃酥的学习笔记(C++篇),哈希算法,算法)