搜索

ppt文档 C++高性能并行编程与优化 - 课件 - 14 C++ 标准库系列课 - 你所不知道的 set 容器

10.23 MB 83 页 3 下载 153 浏览 0 评论 0 收藏
所属分类: 后端开发 / C++
语言 格式 评分
中文(简体)
.pptx
3
摘要
文档主要介绍了C++标准库中的set容器及其相关操作。内容包括set容器与其他容器(如vector)之间的转换方法,set容器的排序机制,以及不同版本set容器(如set、multiset、unordered_set等)在去重、有序性、查找等方面的性能比较。此外,还讲解了如何自定义排序函数以实现特定的排序需求。
AI总结
### 文档总结:C++高性能并行编程与优化 - 你所不知道的 set 容器 #### 核心观点: 1. **set 容器的基本特性**: - `set` 是一个有序的容器,元素按升序排列。 - 支持高效的查找操作(如 `find`、`lower_bound`、`upper_bound`),时间复杂度为 O(log n)。 - 不支持重复元素,自动去重。 2. **set 与其他容器的比较**: - **vector**:无序,查找效率低(O(n))。 - **set/multiset**:有序,支持高效查找和插入。 - **unordered_set**:无序,但在大数据量时平均查找时间较短。 - **unordered_multiset**:无序且支持重复元素。 3. **set 的适用场景**: - 适合按值查找(`find`、`lower_bound`、`upper_bound`)。 - 数据量较小时,`set` 的性能更优。 - 不建议在大数据量场景下优先选择 `set`。 4. **set 的排序功能**: - `set` 可通过自定义比较函数实现特定排序规则。 - 默认使用 `operator<` 进行排序。 5. **set 与其他容器的转换**: - 可通过前向迭代器将 `set` 转换为 `vector`,反之亦然。 - 示例: ```cpp set b = {0, 1, 3, 4, 5}; vector arr(b.lower_bound(2), b.upper_bound(4)); // 结果:{3, 4} ``` 6. **注意事项**: - **避免使用 `set`**:按指针地址排序,而非字符串内容。 - **性能建议**:`unordered_set` 在大数据量时性能更优,但不保证查找稳定性。 #### 课程安排: - **本期**:`set` 容器与迭代器分类。 - **后续课程**: 1. `string`、`string_view`、`const char*` 的使用。 2. `map` 容器全家桶及其应用。 3. 函子 `functor` 与 `lambda` 表达式。 4. STL 算法库实战。 5. 输入输出流与字符串格式化。 6. 用户自定义迭代器与 `traits` 技术。 7. 内存管理与 `allocator`。 #### 总结: `set` 是一个高效且功能强大的容器,适合需要有序查找和去重的场景。理解其与 `vector`、`unordered_set` 等容器的区别与适用场景,可以帮助开发者更高效地解决问题。通过自定义排序和容器转换功能,可以进一步扩展 `set` 的应用范围。
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余 76 页请下载阅读 -
文档评分
请文明评论,理性发言.