Logo
☆☆☆☆☆
0.0
Advanced
35h

C++20 STL Cookbook

在本课程中,你将掌握利用 C++20 最新特性的艺术,并充分发挥标准模板库(STL)的全部潜力。 你将从学习 STL 的通用特性与容器开始,深入探索 lambda 表达式、算法和字符串流。你将全面掌握并理解 STL 的强大功能。随后,你将通过动手编程实践,学习实用类、并发与并行编程,以及文件系统操作。 课程结束时,你将具备编写现代高效代码的能力。你将成为一名自信的 C++ 程序员,熟练运用 STL 解决复杂问题,提升你的编程水平。

13 Lessons
Included in Subscription Plan
Personalized Learning
Powered by AI
C++20 STL Cookbook
在本课程中,你将掌握利用 C++20 最新特性的艺术,并充分发挥标准模板库(STL)的全部潜力。 你将从学习 STL 的通用特性与容器开始,深入探索 lambda 表达式、算法和字符串流。你将全面掌握并理解 STL 的强大功能。随后,你将通过动手编程实践,学习实用类、并发与并行编程,以及文件系统操...

WHAT YOU'LL LEARN

对 C++20 特性及 lambda 表达式的理解

Content

13 Lessons • 0 Quizzes • 0 Challenges

简介
  1. 1

    课程简介

C++20 新特性
  1. 1

    章节概览

  2. 2

    使用新的格式库来格式化文本

  3. 3

    使用 constexpr 实现编译时向量和字符串

  4. 4

    安全地比较不同类型的整数

  5. 5

    使用太空船操作符 <=> 进行三路比较

  6. 6

    轻松通过 <version> 头文件查找特性测试宏

  7. 7

    使用概念和约束创建更安全的模板

  8. 8

    通过模块避免重新编译模板库

  9. 9

    使用范围创建容器的视图

  10. 10

    测验:C++20 特性

通用 STL 特性
  1. 1

    章节概览

  2. 2

    使用新的 Span 类使我们的 C 数组更安全

  3. 3

    使用结构化绑定返回多个值

  4. 4

    在 if 和 switch 语句中初始化变量

  5. 5

    使用模板参数推导以简化和提高代码清晰度

  6. 6

    使用 if constexpr 简化编译时决策

  7. 7

    测验:STL 通用特性

  8. 8

    挑战:让我们的代码更安全且更易读

STL 容器
  1. 1

    章节概览

  2. 2

    使用统一擦除函数从容器中删除元素

  3. 3

    从无序向量中以常数时间删除元素

  4. 4

    直接且安全地访问向量元素

  5. 5

    保持向量元素有序

  6. 6

    高效地向映射中插入元素

  7. 7

    高效修改 Map 中的键

  8. 8

    使用 unordered_map 与自定义键

  9. 9

    使用 Set 对用户输入进行排序和过滤

  10. 10

    一个简单的基于双端队列的逆波兰表达式计算器

  11. 11

    一个使用 Map 的词频统计器

  12. 12

    查找包含长句子的向量的向量

  13. 13

    使用多重映射实现待办事项列表

  14. 14

    测验:STL 容器

  15. 15

    挑战:让我们来玩转容器

兼容的迭代器
  1. 1

    章节概览

  2. 2

    迭代器是基础

  3. 3

    创建一个可迭代的范围

  4. 4

    使我们的迭代器与 STL 迭代器特性兼容

  5. 5

    使用迭代器适配器填充 STL 容器

  6. 6

    创建生成器作为迭代器

  7. 7

    使用反向迭代器适配器实现逆向遍历

  8. 8

    使用哨兵值迭代长度未知的对象

  9. 9

    构建一个 Zip 迭代器适配器

  10. 10

    创建一个随机访问迭代器

  11. 11

    测验:兼容的迭代器

  12. 12

    挑战:反转字符串中的所有内容

Lambda 表达式
  1. 1

    章节概览

  2. 2

    Lambda 表达式

  3. 3

    使用 Lambda 表达式实现作用域内可重用的代码

  4. 4

    使用 Lambda 表达式作为谓词与算法库配合使用

  5. 5

    使用 std::function 作为多态包装器

  6. 6

    使用递归连接 Lambda 表达式

  7. 7

    使用逻辑与组合谓词

  8. 8

    使用相同输入调用多个 Lambda 函数

  9. 9

    使用映射的 Lambda 表达式实现跳转表

  10. 10

    测验:Lambda 表达式

  11. 11

    挑战:使用Lambda表达式输出

STL 算法
  1. 1

    章节概览

  2. 2

    从一个迭代器复制到另一个迭代器

  3. 3

    将容器元素合并为字符串

  4. 4

    使用 std::sort() 对容器进行排序

  5. 5

    使用 std::transform 修改容器

  6. 6

    在容器中查找项目

  7. 7

    使用 std::clamp 将容器的值限制在指定范围内

  8. 8

    使用 std::sample 的示例数据集

  9. 9

    生成数据序列的排列

  10. 10

    合并已排序的容器

  11. 11

    测验:STL 算法

  12. 12

    挑战:深入算法世界

字符串、流与格式化
  1. 1

    章节概览

  2. 2

    使用 string_view 作为轻量级字符串对象

  3. 3

    连接字符串

  4. 4

    转换字符串

  5. 5

    使用 C++20 的格式化库格式化文本

  6. 6

    去除字符串中的空白字符

  7. 7

    从用户输入读取字符串

  8. 8

    统计文件中的单词数量

  9. 9

    从文件输入初始化复杂结构

  10. 10

    使用 char_traits 自定义字符串类

  11. 11

    使用正则表达式解析字符串

  12. 12

    测验:字符串、流与格式化

  13. 13

    挑战:带零空格的字符串

工具类
  1. 1

    章节概览

  2. 2

    使用 std::optional 管理可选值

  3. 3

    使用 std::any 实现类型安全

  4. 4

    使用 std::variant 存储不同类型

  5. 5

    使用 std::chrono 的时间事件

  6. 6

    使用折叠表达式处理可变参数元组

  7. 7

    使用 std::unique_ptr 管理分配的内存

  8. 8

    使用 std::shared_ptr 共享对象

  9. 9

    与共享对象一起使用弱指针

  10. 10

    共享托管对象的成员

  11. 11

    比较随机数引擎

  12. 12

    比较随机数分布生成器

  13. 13

    测验:工具类

  14. 14

    挑战:让我们检查一下数据的类型

并发与并行
  1. 1

    章节概览

  2. 2

    等待指定的时间

  3. 3

    使用 std::thread 实现并发

  4. 4

    使用 std::async 实现并发

  5. 5

    使用执行策略并行运行 STL 算法

  6. 6

    使用互斥锁安全地共享数据

  7. 7

    使用 std::atomic 共享标志和值

  8. 8

    使用 std::call_once 初始化线程

  9. 9

    使用 std::condition_variable 解决生产者-消费者问题

  10. 10

    测验:并发与并行

  11. 11

    挑战:在多线程函数调用中睡眠

使用文件系统
  1. 1

    章节概览

  2. 2

    为 Path 类专门化 std::formatter

  3. 3

    使用路径操作函数

  4. 4

    列出目录中的文件

  5. 5

    使用 Grep 工具搜索目录和文件

  6. 6

    使用正则表达式和 directory_iterator 重命名文件

  7. 7

    创建一个磁盘使用量计数器

  8. 8

    测验:文件系统的使用

  9. 9

    挑战:路径里面有什么?

一些其他想法
  1. 1

    章节概览

  2. 2

    创建一个用于搜索建议的 Trie 类

  3. 3

    实现多个生产者和消费者

  4. 4

    计算两个向量的误差平方和

  5. 5

    构建我们自己的算法:分割

  6. 6

    利用现有算法:收集

  7. 7

    去除连续的空白字符

  8. 8

    将数字转换为文字

  9. 9

    测验:Trie、Gather 函数与空白字符去除

  10. 10

    挑战:移除所有空白字符!

结论
  1. 1

    最后的思考

Certificate of Completion

Showcase your accomplishment by sharing your certificate of completion.

Course Author:Anonymous User

Reviews

Read reviews from students who have taken this course and share your own experience.

Reviews & Comments (0)