1.头文件
#include<set>
using namespace std;
2.初始化
se<int>se; //构造键类型为int的一个容器。
set<char>se;
set<int>s[MAXN];
3.相关函数
(1) se.begin() 返回指向第一个元素的迭代器。
(2) se.clear() 清除所有元素。
(3) se.count() 返回某个元素的个数。
(4) se.empty() 如果集合为空,返回true。
(5) se.end() 返回指向最后一个元素之后的迭代器。
(6) se.erase() 删除集合中的元素。
(7) se.find() 返回一个被查找到元素的迭代器。
(8) se.max_size() 返回集合中能容纳元素的最大限值。
(9) se.size() 返回集合中元素的数目。
(10) se.swap() 交换两个集合的变量。
(11) se.insert() 在集合中插入元素。
4.插入元素
例:
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
se.insert(a[i]);
}
insert()函数会将括号中的元素插入到集合se中。因为集合中的元素具有唯一性,所以如果插入相同的元素,集合se只储存一个。se中元素储存位置的顺序并不是按照插入顺序排列,会按照从小到大的顺序自动排列。
例:
#include<stdio.h>
#include<string.h>
#include<string>
#include<algorithm>
#include<iostream>
#include<set>
#define mmset(a,b) memset(a,sizeof(b),a);
using namespace std;
int main()
{
int i,a[5]={1,3,5,2,4};
set <int> se;
se.clear(); //清空se中的元素。
for(i=0;i<5;i++)
{
printf("%d ",a[i]); //按顺序输出a[i]。
se.insert(a[i]); //将a[i]插入到集合se中。
}
printf("\n");
set<int>::iterator it; //按顺序输出集合se中的元素
for(it=se.begin();it!=se.end();it++)
printf("%d ",*it);
printf("\n");
return 0;
}
运行结果:1 3 5 2 4
1 2 3 4 5
5.遍历和反向遍历
(1)遍历
set<int>::iterator it;
for(it=se.begin();it!=se.end();it++)
printf("%d",*it);
(2)反向遍历
set<int>::iterator rit;
for(rit=se.rbegin();rit!=se.rend();rit++)
printf("%d",*rit);