C++ set用法

set是一个存储唯一元素且内部有序的C++容器,元素不可修改但可增删。基于红黑树实现,支持快速查找、插入和删除操作。set按特定排序规则存储元素,适合自动去重和排序需求。若需无序去重,可选择unordered_set,但无法保证顺序。对于多重复元素,使用multiset。
摘要由CSDN通过智能技术生成

   头文件: 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>>.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值