C++中set的使用
定义set
map<int,int>s
s是set,set中的元素可以是基本数据类型,也可以是结构体,但是需要重载比较运算符。
lower_bound()
auto it=s.lower_bound(x)
返回s中优先级高于或等于x的第一个元素。如果优先级都低于x则返回s.end()。
upper_bound()
auto it=s.upper_bound(x)
返回s中优先级严格高于x的第一个元素。如果优先级都低于或等于x则返回s.end()。
求前驱和后继
it是set的迭代器,可以通过如下方式求其前驱和后继:
//使用库函数prev()和next()
//求前驱
auto it=prev(it);
//求后继
auto it=next(it);
//求前驱
it--;
//求后继
it++;
find()
auto it =s.find(x);
用于在集合中查找严格等于x的元素。它返回一个指向元素x的迭代器,如果元素不存在,则返回s.end()。
遍历
for(auto it=s.begin();it!=s.end();it++){
}
删除某个元素
我们要从set中删除值为x的元素:
auto it=s.find(x);
s.erase(it);