c++的set是一个强大的容器。(c++选手福利)
下面说一下OI中常会用到的。
begin(),返回set容器的第一个元素
end(),返回set容器的最后一个元素
clear(),删除set容器中的所有的元素
empty(),判断set容器是否为空
迭代器,举个例子
multiset是支持可重复出现元素的,但是set不行
下面这段程序可以帮我们实现排序。
#include<cstdio>
#include<set>
using namespace std;
multiset<int> s;
multiset<int> ::iterator it,y;
int x;
int main(){
int n;
scanf("%d",&n);
for (int i=1;i<=n;i++)
{
scanf("%d",&x);
s.insert(x);
}
for(it=s.begin();it!=s.end();it++)
printf("%d ",*it);
}
于是我们又有
erase(it) ,删除迭代器it指向的值
erase(key),删除键值key的值
insert(x),将x插入set中
lower_bound(key) ,返回第一个大于等于key的迭代器
upper_bound(key),返回最后一个大于等于key的迭代器
注意:it++,it–的时间是log的,当你删除了一个迭代器指向的那个数,那么这个迭代器就没用了。
“`