ppt文档 C++高性能并行编程与优化 - 课件 - 17 由浅入深学习 map 容器

8.76 MB 90 页 0 评论
语言 格式 评分
中文(简体)
.pptx
3
摘要
文档主要介绍了C++中map容器的使用方法,包括读取、写入、判断、删除等操作。重点讲解了map提供的两个查找接口at()和[]的区别,以及在遍历时如何安全删除元素。同时介绍了emplace_hint、emplace和try_emplace的区别,并展示了C++17 range-based loop配合structural-binding语法糖的使用。
AI总结
以下是对文档内容的中文总结: --- ### 总结 #### 课程安排概述 课程共分为10个部分,本期为第4部分,重点介绍 `map` 容器的用法及优化,内容涵盖从基础到进阶的知识点。 #### 小彭老师的四定律 1. **读取**:使用 `at()`,若键不存在会抛出异常。 2. **写入**:使用 `[]`,若键不存在则创建默认值。 3. **判断键是否存在**:使用 `count()`,返回1或0。 4. **删除**:使用 `erase()`,若键不存在则无操作。 #### `map` 常用函数行为分析 | **操作类型** | **C++ 代码** | **键存在** | **键不存在** | |--------------|--------------|------------|--------------| | 读取 | `val = m.at(key)` | 读取值 | 抛出异常 | | 写入 | `m[key] = val` | 覆盖旧值 | 创建并赋值 | | 判断 | `m.count(key)` | 返回1 | 返回0 | | 删除 | `m.erase(key)` | 删除键 | 无操作 | #### `map` 遍历方法 - **传统遍历**:通过迭代器访问键值对的 `first` 和 `second` 成员。 ```cpp for (auto tmp : m) { print(tmp.first, tmp.second); } ``` - **C++17 range-based loop 配合 structural-binding**: ```cpp for (auto [k, v] : m) { print(k, v); } ``` #### 其他补充知识 1. **结构化绑定**:C++17 引入的语法糖,简化遍历代码。 2. **其他容器**:包括 `set`、`multiset`、`unordered_set` 等的基本概念。 3. **查找效率**:`vector` 查找效率低(线性时间复杂度),而 `map` 和 `set` 使用二叉排序树实现。 --- 以上内容涵盖了 `map` 容器的核心用法及相关扩展知识,逻辑清晰,重点突出,语言简洁明了。
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余 83 页请下载阅读 -
文档评分
请文明评论,理性发言.