Set是容器的一种,内部采用红黑树结构,insert函数直接将元素插入红黑树,用户不用去排序,解决了排序这个难题。
另一特点是不可插入重复元素,在使用时应注意这一点。
接下来将常用的功能集合在了一起,包括添加,删除,查找等功能。
代码:
/*
Set
Author:YuBo
*/
#include<iostream>
#include<set>
using namespace std;
set<int> s;
set<int>::iterator it;
set<int>::reverse_iterator rit;
void menu()
{
cout<<"******1.添加 2.查找******"<<endl;
cout<<"******3.删除 4.显示******"<<endl;
cout<<"******5.退出"<<endl;
}
void Add()
{
int i;int n;int N;
cout<<"请输入你要输入的整数个数:"<<endl;
cin>>N;
cout<<"请输入"<<N<<"个整数:"<<endl;
for(i=0;i<N;i++)
{
cin>>n;
s.insert(n);
}
}
void Find()
{
int n;
cout<<"请输入要查找的数:"<<endl;
cin>>n;
it=s.find(n);
if(it!=s.end())
cout<<*it<<endl;
else
cout<<"没找到!"<<endl;
}
void Delete()
{
int i,place,val,from,to;
cout<<"*******1.删除某位置元素 2.删除某个值的元素*******"<<endl;
cout<<"*******3.清空所有元素*******"<<endl;
cin>>i;
switch(i)
{
case 1:{
cout<<"请输入要删除第几个元素(首元素为0):"<<endl;
cin>>place;
it=s.begin(); //迭代器指向开头第一个
while(place){it++;place--;}//找位置
int ss=*it;//把值给个暂时的变量,其实和删除确定值一样,只不过找到位置而已
s.erase(ss); //删除该元素
}break;
case 2:{
cout<<"请输入该值:"<<endl;
cin>>val;
s.erase(val);
}break;
case 3:s.clear();break;
default:cout<<"输入错误!"<<endl;
}
}
void Display()
{
int i;
cout<<"*******1.升序输出 2.降序输出*******"<<endl;
cin>>i;
switch(i)
{
case 1:
{
for(it=s.begin();it!=s.end();it++)
{
cout<<*it<<" ";
}
cout<<endl;
}break;
case 2:
{
for(rit=s.rbegin();rit!=s.rend();rit++)
{
cout<<*rit<<" ";
}
cout<<endl;
}break;
}
}
int main()
{
int i;
while(1)
{
menu();
cout<<"请输入菜单号:"<<endl;
cin>>i;
if(i==5)break;
switch(i)
{
case 1:Add();break;
case 2:Find();break;
case 3:Delete();break;
case 4:Display();break;
default:cout<<"输入错误!";break;
}
}
return 0;
}
运行截图:
有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。
更多c++STL的使用:C++ STL的使用