set 的基本用法:
#include<iostream>
#include<set>
#include<stdio.h>
#include<vector>
using namespace std;
int main()
{
set<int> s;
int n,a;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&a);
s.insert(a);///插入某个元素
}
printf("返回set容器的第一个元素的地址 %d\n",s.begin());
printf("返回set容器的第一个元素 %d\n",*s.begin());
printf("返回set容器的最后一个元素地址 %d\n",s.end());
printf("返回set容器的最后一个元素 %d\n",*s.end());
printf("返回set容器可能包含的元素最大个数 %d\n",s.max_size());
printf("返回当前set容器中的元素个数 %d\n",s.size());
set<int> :: iterator it;///遍历
for(it=s.begin();it!=s.end();it++)
printf("%d ",*it);///会按照从小到大的顺序输出,元素在set中已经自动排好顺序了
printf("\n");
s.clear();///删除set容器中的所有的元素
if(s.empty())///判断set容器是否为空
printf("s 为空\n");
return 0;
}
set 和结构体一起使用,如下:
#include<iostream>
#include<set>
#include<stdio.h>
#include<vector>
using namespace std;
struct book{
int id;
int sor;
}h;
bool operator < (const book &x,const book &y)///对于set里的排序,需要自己定义
{
return x.id < y.id;
}
int main()
{
set<book> s;
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d %d",&h.id,&h.sor);
s.insert(h);///插入某个元素
}
set<book>:: iterator it;
for(it=s.begin();it!=s.end();it++)
{
printf("%d %d\n",(*it).id,(*it).sor);
}
return 0;
}