1. 特性
set即表示集合。set的特性是,所有元素都会根据元素的键值自动排序,并且set会自动去重,即set中不会出现相同元素。
2.函数
set的头文件为#include<set>
。
其具有以下函数:
1.q.insert(x):将x插入q中
2.q.erase(x):将x从q中删除,返回0或1,0表示x不存在
3.q.clear(x):清空q
4.q.empty():判断q是否为空
5.q.size():返回q中的元素个数
6.q.find(x):查找x,若不存在,则返回q,end()
7.q.lower_bound(x):返回一个迭代器,指向第一个不小于x的元素
8.q.upper_bound(x):返回一个迭代器,指向第一个大于x的元素
9.q.rend():返回第一个元素的前一个元素迭代器
10.q.begin():返回第一个元素的迭代器
11.q.end():返回最后一个元素的迭代器
3. 迭代器
set::iterator i;
4.代码举例
#include<iostream>
#include<set>
using namespace std;
set<int> q;
set<int,greater<int>> t;//降序排序
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
q.insert(x);//将x插入至q
}
int m;
cin>>m;
while(m--)
{
set<int>:: iterator i=q.begin();//迭代器i指向第一个元素的地址
int y;
cin>>y;
if(q.find(y)!=q.end())//可以在q中找到y
{
cout<<"yes"<<endl;
q.erase(y);//删除元素y
}
else
{
i=q.lower_bound(y);//找到第一个不小于y的元素
if(i!=q.end())cout<<(*i)<<endl;
i=q.upper_bound(y);//找到第一个大于y的元素
if(i!=q.end())cout<<(*i)<<endl;
}
}
if(!q.empty())//如果q不为空
{
cout<<q.size()<<endl;//输出q的元素个数
q.clear();//清空q
}
return 0;
}