C++复习集合
集合set
- 头文件<set>
- set是一个不包含重复元素的有序集合
- set<int>s;
- 方法
- s.begin();——返回第一个元素
- s.end();——返回最后一个元素
- s.empty();——返回是否为空
- s.size();——返回当前set大小
- 插入
- s.insert(a); //set中只能通过这种方法插入
- 删除
- s.clear();——清空
- s.erase(k);——k为其中某个键值
- s.erase(p);——p为一个迭代器
- s.erase(b,e);——b,e为两个迭代器
- 查找
- 同之前的map类似有两种
- s.count(k);——存在则为1,不存在则为0
- s.find(k);——返回k的迭代器
- s.lower_bound(k);——返回第一个大于等于k的迭代器
- s.upper_bound(k);——返回打一个小于等于k的迭代器
- 遍历
- (1)迭代器
- (2)for(auto)
- (3)for_each
- 可重载运算符定义排序规则
-
#include<set> #include<iostream> using namespace std; struct cmp{ bool operator()(string &a, string &b){ return a[1] < b[1]; } }; struct node{ int x,y; friend bool operator < (node a, node b){ return a.x + a.y < b.x + b.y; } }; int main(){ set<int>s1; //从小到大 set<int,greater<int> >s2; //从大到小 set<string,cmp>s3 //自定义 set<node>s4; //重载 return 0; }
浙公网安备 33010602011771号