头文件: set
存储唯一元素(值本身就是键,重复添加进入无效) + 内部集合有序(内部元素对象是有序储存的)
set是按照一定次序存储元素的容器
在set中,元素的value也标识它(value就是key,类型为T),并且每个value必须是唯一的。
set中的元素不能在容器中修改(元素总是const),但是可以从容器中插入或删除它们。
在内部,set中的元素总是按照其内部比较对象(类型比较)所指示的特定严格弱排序准则进行排序。
set容器通过key访问单个元素的速度通常比unordered_set容器慢,但它们允许根据顺序对子集进行直接迭代。
set在底层是用二叉搜索树(红黑树)实现的。
set.begin() —— 返回容器头部元素迭代器
set.end() —— 返回容器尾部元素下一位置的迭代器
set.empty() —— 返回容器是否为空,为空返回True,否则为 false
set.size() —— 返回容器内部元素个数
set.max_size() —— 返回容器最大存储容量
set.insert() —— 向容器当中插入元素
set.erase() —— 删除容器当中所有值为 x 的元素
set.clear() —— 删除容器当中所有元素
set.swap() —— 交换两个容器当中的元素
set.find() —— 得到指定元素的迭代器,若不存在返回 end 迭代器
set.count() —— 查找指定元素的个数
set.lower_bound() —— 查找第一个大于等于元素x的迭代器位置,若不存在返回 end 迭代器
set.upper_bound() —— 查找第一个大于元素x的迭代器位置,若不存在返回 end 迭代器
set 最主要的作用是自动去重并按升序排序,因此碰到需要去重但是却不方便直接开数组的情况,可以用 set 解决。
set 中元素是唯一的,如果需要处理不唯一的情况,则需要使用 multiset。
unordered_set 可以用来处理只去重但不排序的需求,速度比 set 要快得多。但是注意不能直接使用unordered_set<vector<int>>.