@ysner
2018-10-30T23:59:17.000000Z
字数 1345
阅读 1762
set
支持修改、删除、排序、去重等操作。
include<set>
struct node{...};//在里面制定比较规则,否则就是按从小到大
set<node>s;
set<node>::iterator it;
如果函数括号里面是iterator,说明要写
如果是key_value,说明写数字就成。
定位器前加能代表中第个数。
begin()返回set容器的第一个元素
end()返回set容器的最后一个元素
clear()删除set容器中的所有的元素
empty()判断set容器是否为空
size()返回当前set容器中的元素个数
count()用来查找set中某个某个键值是否出现。
equal_range()返回一对定位器,分别表示第一个大于或等于给定关键值的元素 和 第一个大于给定关键值的元素,这个返回值是一个pair类型,如果这一对定位器中哪个返回失败,就会等于end()的值。
pair<set<int>::const_iterator,set<int>::const_iterator> pr;
pr = s.equal_range(3);
cout<<"第一个大于等于 3 的数是 :"<<*pr.first<<endl;
cout<<"第一个大于 3的数是 : "<<*pr.second<<endl;
\\方法一
s.erase(s.begin());
\\方法二
s.erase(s.begin(),s.begin+?);
\\方法三
s.erase(8);
(说人话,就是删除first~second之间的数)
Pay attention :由于不自带错误检查,小心RE
- find()返回定位器,如果没找到则返回end()。
set<int>::iterator iter;
if((iter = s.find(2)) != s.end())
{
cout<<*iter<<endl;
}
cout<<*s.lower_bound(2)<<endl;
别忘了第一句!!!
if(!E[u].empty())
for(it=E[u].begin();it!=E[u].end();++it)
如果你要输出函数的返回值,要在前面加个。
cout<<*s.begin()<<endl;
如果你要把返回值存在变量里,就要这样定义
set<node> :: iterator it;
还有存的变量
pair<set<int>::const_iterator,set<int>::const_iterator> pr;
与用法大体类似(连头文件都没变)
不过