set集合容器使用一种称为红黑树的平衡二叉检索树的数据结构,来组织泛化的元素数据,每个节点包含一个取值红色或黑色的颜色域,以利于进行树的平衡处理。作为节点键值的元素的插入,必须确保每个子树根节点的键值大于左子树所有节点的键值,而小于右子树所有节点的键值。不会将重复的键值插入容器,也不需指定具体的插入位置,而按元素在树中的关联关系,进行位置检索和插入,元素的删除亦然。
元素数据的检索,使用的是二叉检索树的中序遍历算法,检索的效率高于vector、deque和list等容器。由于采用中序遍历算法可将二叉检索树的键值,由小到大排列遍历出来,因此set集合容器蕴含于元素间的有序性。
一、set技术原理
红黑树是一种特殊的二叉检索树,不仅set容器应用红黑树,其他容器如multiset、map和multimap也应用红黑树进行元素的链接。
二、set应用基础
#include <set>
1、元素的插入
2、元素的删除
3、元素的遍历访问
4、元素的反向遍历
5、元素的搜索
#include <set>
#include <iostream>
int main(void) {
using namespace std;
set<int> s;
s.insert(10);
s.insert(15);
s.insert(11);
s.insert(17);
s.insert(13);
s.insert(19);
//
int v = 13;
set<int>::iterator i_v = s.find(v);
cout << *i_v << endl;
//
v = 60;
i_v = s.find(v);
if (i_v != s.end() )
cout << *i_v << endl;
return 0;
}
6、其他的常用函数