一、序列式容器和关联式容器
在之前学习过程中,我们也接触了 STL 中的部分容器,如 vector、string、list、deque 等,这些都属于序列式容器,因为其底层是线性结构,里面存储的为数据本身。
关联式容器也是用来存储数据的,但不同的是,关联式容器的底层通常是非线性结构的,也就意味着两个位置具有紧密的关联关系,如果进行交换,它们的存储结构就被破坏了。
二、set 的使用
1. set 类的介绍
关于 set 的几个要点:
- set 是用来存储唯一元素的容器,且按照一定的顺序进行排列。
- set 中不允许出现重复的元素,其本质是负责排序 + 去重。
- set 在底层是用红黑树来实现的。
- set 的比较默认按照小于进行。
- set 的正向迭代器遍历为升序序列,反向迭代器为降序序列。
- 在 set 类中的其内容可以进行删除,但不支持修改。
- set 中查找某个元素的时间复杂度为 logN。
2. set 的构造
在 set 容器中,可以使用多种方式进行构造,以下是常见的构造方式:
1. 默认构造:
set<int> s;
2. 迭代器构造:
vector<int> ret = {1, 2, 3, 4, 5};
set<int> s(ret.begin(), ret.end());
3. 初始化列表构造:
set<int> s = {1, 2, 3, 4};
4. 拷贝构造:
set<int> s1 = {1, 2, 3, 4};
set<int> s2(s1);
3. set 的迭代器
set 容器提供了两种迭代器:一个是正向迭代器,还有一个为反向迭代器。
正向迭代器:
- begin() : 返回指向 set 容器中的第一个元素。
- end() : 返回指向 set 容器中的最后一个元素之后的位置。






