map与unordered_map区别
map
头文件 #include<map>
内部基于红黑树实现
红黑树
红黑树是一种自平衡的二叉查找树
性质:
1.每个节点要么是黑色,要么是红色
2.根节点黑色
3.每个叶子节点是黑色
4.每个红色节点是黑色
5.任意一节点到每个叶子节点的路径都包含数量相同的黑节点
自平衡:
1.左旋:以某个结点作为支点(旋转结点),其右子结点变为旋转结点的父结点,右子结点的左子结点变为旋转结点的右子结点,左子结点保持不变。如图3。
2.右旋:以某个结点作为支点(旋转结点),其左子结点变为旋转结点的父结点,左子结点的右子结点变为旋转结点的左子结点,右子结点保持不变。如图4。
3.变色:结点的颜色由红变黑或由黑变红。
查找
与二叉查找树相同
插入:
删除:
红黑树部分参考文章
unordered_map
头文件 #include<unordered_map>
内部基于哈希表实现
哈希表
通过把关键码值映射到Hash表中一个位置来访问记录,查找的时间复杂度可达到O(1)
对比
map:
优势:
1.有序性,这是map结构最大的优点,其元素的有序性在很多应用中都会简化很