set
set之iterator
定义:set::iterator iter
运用:*iter
遍历 for(iter=set.begin();iter!=set.end();iter++)
还可以直接用auto it=set.begin() (auto是自动匹配类型)
注意
iterator只能用++,–运算符。不能*(iter-1),另外还要注意iter++后自身会改变
例:set中有0,2,4,iter指向2,现在cout<<iter<<” “<<(iter—)<<endl;
输出0,2,先执行iter–,我也不知道为什么
set之lower_bound()
lower_bound()返回从first开始的第一个大于或等于val的元素的地址。如果所有元素都小于val,则返回last的地址,所以必须要set<int>::iterator iter;
iter=st.lower_bound(一个数字)
upper_bound()返回最后一个大于等于val的元素的地址
set基础
定义:set<数据类型> 标识符 ,set中元素都唯一
set实际上运用了红黑树。另外,set中元素会自动排序
函数
begin(),返回的是开头元素迭代器
end()
clear()
empty()
size()
进阶
count(数据)判断某个值是否在set中
erase(iterator) 删去迭代器所指向的值
erase(iteratora,iteratorb)删去a,b之间的值
erase(数据)删去该数据
set删除是不会检查任何错误的,使用时小心
find(数据)返回指定元素的迭代器,没有则返回最后一个元素的迭代器
当set中没有元素的时候,*s.end()=0
insert(某一个值),将一个值插入set中,注意这是唯一的将元素弄到set中的方法,并且重复插入无效
判断insert插入是否成功的方法(具体可看)
//typedef pair<iterator, bool> _Pairib;
pair<set<Student,FuncStudent>::iterator,bool> pair1=set1.insert(s1);
if(pair1.second==true)
{
cout<<"插入s1成功"<<endl;
}
else
{
cout<<"插入s1失败"<<endl;
}
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment