【算法常用STL】-> set

1. set(顺序容器)

<set>主要包括set(元素不能重复)和multiset(可以包含若干个相等的元素),分别叫做 “有序集合”和“有序多重集合”。set 和 multiset 的内部实现是一棵红黑树,它们支持的函数基本相同。

set<int> s;
struct rec{}; set<rec> s;  // 结构体rec中必须重载定义小于号
multiset<double> s;

Ps: 结构体rec中必须重载定义小于号

2. 遍历set 的方式

for(auto x : set)

3.count()

返回 是否存在 元素 是一个 bool 类型

4.迭代器

同 vector 一样 也存在迭代器的概念 简单理解为指针即可

5. size/empty/clear

同vector

6.end / begin

分别指向 set 首位元素的迭代器

7.find

s.find(x)在集合s中查找等于x的元素,并返回指向该元素的迭代器。若不存在,则返回s.end()。时间复杂度为 O(logn)O(logn)。

可以用来判断是否存在元素 x
如果存在的话,会返回迭代器,
如果不存在的话,会返回set.end()
所以可以通过判断 set.end() 与 set.find(x) 来确定是否存在元素x

8. insert

插入 时间复杂度O(log N)

9. lower_bound/upper_bound

同 vector BinarySearch 函数

10. count

set.count(x)返回集合s中等于x的元素个数,时间复杂度为 O(k+logn)O(k+logn),其中 kk 为元素x的个数

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值