1.set容器简介
set集合容器实现了红黑树的平衡二叉检索树的数据结构,在插入元素时,它会自动调整二叉树的排序 ,把该元素放在适当的位置,以确保每个子树根节点的键值大于左子树节点的所有键值,而小于右子树所有节点的键值;另外,还得确保根节点左子树的高度与右子树的高度相等,这样,二叉树的高度最小,从而检索速度最快,值得注意的是,它不能重复插入同样键值的元素。
平衡二叉检索树采用中序遍历算法,检索效率高于vector,deque和list等容器,另外,采用中序遍历算法可将键值从小到大的顺序排列。
Set容器的键值不可随意修改,一旦修改了,容器就会根据新的键值旋转子树,以保持新的平衡。
使用set容器前,首先要在头文件中申明include<set>
2.set容器的功能描述
#include<iostream>
#include<set>
using namespace std;
int main(int argc,char *argv[])
{
int ss,sss,ssss;
int i;
set<int> s; //创建set容器对象,元素类型为int
while(cin>>ss && i!=9)
{
s.insert(ss); //采用insert()方法插入元素,元素默认按从大到小的顺序排列
++i;
}
//元素的中序遍历
set<int>::iterator it; //定义前向迭代器
for(it=s.begin();it!=s.end();it++)
{
cout<<*it<<"\t";
}
cout<<endl;
//元素的反向遍历
set<int>::reverse_iterator rit; //定义反向迭代器
for(rit=s.rbegin();rit!=s.rend();rit++)
{
cout<<*rit<<"\t";
}
cout<<endl;
cout<<"start selection delete"<<endl;
cin>>sss;
s.erase(sss); //删除输入的元素(sss)
//s.clear(); //清空集合
cout<<"s.size :"<<s.size()<<endl; // 输出集合的大小
//元素的检索
cout<<"start find"<<endl;
cin>>ssss;
it=s.find(ssss); //查找的元素(ssss)
if(it!=s.end())
cout<<*it<<"\t";
else
cout<<"not find"<<endl;
return 0;
}