常见的方法
略
特点
set和map按照key的字典序维护树,当题目要求按某个量的字典序时,可以插入set/map中,再输出。
- set的增删查改都是logn
方法介绍
- count
- max_size()
- upper_bound()
- lower_bound()
set的合并方法
- 一个个插入
- set1.insert(set2.begin(),set2.end());//一次性插入
- set的合并本质上就是求并集,set_union()
set的交并差补
交并差补四个函数的参数相同,常用版本中都是5个参数,
set_xxxx(set1.begin(),set1.end(),set2.begin(),set2.end(),inserter(res,res.end());
> 值得注意的是最后一个参数都是inserter(集合名,集合范围尾部),而不是集合范围的头和尾
- 交集set_intersection()
set_intersection(set1.begin(),set1.end(),set2.begin(),set2.end(),inserter(res,res.end());
看起来很长,不过其实挺好用的。5个参数,1,2,3,4都是要处理的set的范围。第5个是求差集后存放在res集合中,第一个是集合名,第二个是集合尾部。
- 并集set_union()
- 差集set_difference()
- 补集set_symmetric_difference()
补集也可以通过求交再求差实现。
查找两个集合中相同元素
- set + find()
- 直接用内置交集函数set_intersection()
结构体的set
再set中使用结构体需要注意重载小于号