集合的操作如下:
1.
set<data_type>name;//如:set<int>name;定义一个数据类型为data_type的集合name。
2.
name.insert(variable);//如:a.insert(b); 将b插入集合a。
3.
name.erase(&variable);//如:a.erase(&b); 将b从集合a中删除。
4.
name.empty();//如:a.empty(); 判断集合a是否为空。若为空,则返回1;若不为空,则返回0。
5.
name.begin();//如:a.begin(); 返回集合中最前的元素,结果为其指针。
6.
name.end();//如:a.end(); 返回集合中最后的元素,结果为其指针。
7.
name.lower_bound(variable);//如:a.lower_bound(b); 返回集合第一个大于等于b的元素。
定义迭代器set<data_type>::iterator iter=a.lower_bound(b);那么--iter就指向第一个小于b的元素。
name.lower_bound(variable);//如:a.upper_bound(b); 返回集合第一个大于b的元素。
定义迭代器set<data_type>::iterator iter=a.upper_bound(b);那么--iter就指向第一个小于等于b的元素。
8.
name.find(variable);//如:a.find(b); 找到元素b则返回元素b在集合a中的地址。
9.
name.clear();//如:a.clear(); 删除集合a中的全部元素。
示例程序:
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<queue>
#include<vector>
#include<climits>
#include<string>
#include<cstdlib>
#include<set>
#include<stack>
#include<map>
#include<bitset>
#include<ctime>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
inline ll read()
{
char k=0;char ls;ls=getchar();for(;ls<'0'||ls>'9';k=ls,ls=getchar());
ll x=0;for(;ls>='0'&&ls<='9';ls=getchar())x=x*10+ls-'0';
if(k=='-')x=0-x;return x;
}
struct E{
ll x;
ll y;
bool operator <(const E & r)const
{
return y<r.y;
}
};
set<E>b;
int main()
{
E a;
cout<<b.empty()<<endl;
a.x=2;a.y=2;
b.insert(a);
a.x=3;a.y=3;
b.insert(a);
a.x=4;a.y=4;
b.insert(a);
a.x=5;a.y=5;
b.insert(a);
a.x=6;a.y=6;
b.insert(a);
cout<<b.size()<<endl;
for(set<E>::iterator it=b.begin();it!=b.end();it++)
{
cout<<it->x<<" "<<it->y<<endl;
}
b.erase(b.begin());
for(set<E>::iterator it=b.begin();it!=b.end();it++)
{
cout<<it->x<<" "<<it->y<<endl;
}
cout<<b.empty()<<endl;
a.x=5;
a.y=5;
set<E>::iterator it=b.lower_bound(a);//比A大的第一个元素
cout<<it->x<<" "<<it->y<<endl;
it--;
cout<<it->x<<" "<<it->y<<endl;
it=b.upper_bound(a);//比A大的第一个元素
cout<<it->x<<" "<<it->y<<endl;
it--;
cout<<it->x<<" "<<it->y<<endl;
return 0;
}
输出结果:
1 集合为空
5 集合元素个数
2 2
3 3
4 4
5 5
6 6 集合中的元素
3 3
4 4
5 5
6 6 删除第一个元素后的集合元素
0 集合不为空
5 5 第一个大于等于a的元素
4 4 第一个小于a的元素
6 6 第一个大于a的元素
5 5 第一个小于等于a的元素