一、引言
map和set底层结构比较复杂,我认为我们先谈基本介绍再谈C++11,最后再谈map和set底层以及map和set封装。
二、简单介绍一下map和set
map和set底层都是红黑树,是二叉搜索树的一种,查找非常快。不像数组、链表一样一个一个对比,可以理解为创建一个非常适合使用二分查找的结构,每次查找都可以排除掉上一次排除元素的一半。
下面小编来介绍一个非常有意思的二叉树结构——二叉搜索树
小讲、map和set的底层红黑树的祖先——二叉搜索树
二叉搜索树其实很简单,就是确定一个顺序,那一边(左边还是右边)大于根结点(我们将一棵子树的顶点称为根结点,任意一棵子树(只有一个点也可以被称为子树,子树是一个小单元,不是一个数量单位。)都有它的根结点)。那我们可以假设右子树(子树的右子树)的所有结点都大于子树的根节点。那左子树的结点肯定小于根结点。那我们以此作图就是这样。红黑树呢,也只是增加了几条规则保证二叉搜索树的平衡,改变根结点使二叉树像天平,这样就可以每次查找到下一层就可以排除掉一半的结点。

2.1 map和set各自具有的特点。
首先还是说说使用map和set所要包含的头文件时