C++高性能并行编程与优化 - 课件 - 14 C++ 标准库系列课 - 你所不知道的 set 容器
10.23 MB
83 页
0 评论
语言 | 格式 | 评分 |
---|---|---|
中文(简体) | .pptx | 3 |
摘要 | ||
文档详细介绍了C++标准库中的set容器,包括其与vector的主要区别、set的内部实现机制以及其使用场景。重点比较了set、multiset、unordered_set和unordered_multiset的功能和性能特点,并展示了如何通过迭代器使用lower_bound和upper_bound等函数进行元素查找。同时,文档还探讨了如何将set中的元素转换到vector中,以及set的自定义排序机制。 | ||
AI总结 | ||
# C++ 高性能并行编程与优化 - 《你所不知道的 set 容器》总结
## 课程概述
本课程主要介绍了 C++ 标准库中的 `set` 容器,重点讨论了其功能、用法以及与其他容器的区别和转换。课程内容涵盖了 `set` 的基本特性、常用函数、与其他容器的比较以及自定义排序功能等。
---
## set 容器的特性
1. **自动排序**:`set` 中的元素会自动按照从小到大的顺序排列。
2. **去重功能**:`set` 会自动去除重复元素,只保留唯一的值。
3. **高效查找**:`set` 提供高效的按值查找功能,时间复杂度为 \(O(\log n)\)。
4. **内存布局**:`set` 内部通过红黑树实现,元素在内存中并非连续存储。
---
## set 与其他容器的区别
1. **与 vector 的区别**:
- `vector` 保持插入顺序且支持随机访问,而 `set` 自动排序且不支持随机访问。
- `vector` 允许重复元素,而 `set` 自动去重。
2. **与 multiset 的区别**:
- `set` 不允许重复元素,而 `multiset` 允许重复。
3. **与 unordered_set 的区别**:
- `set` 元素排序,而 `unordered_set` 无序,基于哈希表实现,查找时间复杂度为 \(O(1)\)。
- `unordered_set` 不支持 `lower_bound` 和 `upper_bound` 等函数。
---
## 常用函数
1. **查找函数**:
- `find(x)`:查找等于 `x` 的元素。
- `lower_bound(x)`:返回第一个大于等于 `x` 的元素的迭代器。
- `upper_bound(x)`:返回第一个大于 `x` 的元素的迭代器。
- `equal_range(x)`:返回所有等于 `x` 的元素的范围。
2. **插入与删除**:
- 支持 `emplace`、`emplace_hint` 和 `try_emplace` 方法。
3. **转换示例**:
- 可将 `set` 中的元素范围(如 `2 ≤ x ≤ 4`)拷贝到 `vector` 中,利用 `vector` 的前向迭代器构造函数。
---
## 自定义排序与注意事项
1. **自定义排序函数**:
- `set` 支持自定义比较函数(`CompT`),如通过 `std::greater |
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余
76 页请下载阅读 -
文档评分