【算法常用STL】-> set

147 阅读1分钟

本文已参加[新人创作礼]活动,一起开启掘金之路。

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)。

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的个数