Logo
☆☆☆☆☆
0.0
Intermediate
13h

C++20 全面指南

本课程是关于最新版C++——C++20的完整指南。 你将学习C++20的核心特性,以及所有细微的新增功能。首先,你将深入了解新标准的细节,尤其聚焦于四大核心特性:概念(concepts)、模块(modules)、范围库(range library)和协程(coroutines)。 你还将深入学习标准库的新增功能以及并发编程相关内容。为了帮助你更好地掌握知识,每一章都包含大量示例代码,让你直观理解每个特性的实际效果。最后,你将通过一些案例研究,将理论知识应用于实践。

31 Lessons
Included in Subscription Plan
Personalized Learning
Powered by AI
C++20 全面指南
本课程是关于最新版C++——C++20的完整指南。 你将学习C++20的核心特性,以及所有细微的新增功能。首先,你将深入了解新标准的细节,尤其聚焦于四大核心特性:概念(concepts)、模块(modules)、范围库(range library)和协程(coroutines)。 你还将深入学习...

WHAT YOU'LL LEARN

使用概念编写更通用的程序

Content

31 Lessons • 0 Quizzes • 0 Challenges

简介
  1. 1

    入门

  2. 2

    约定

  3. 3

    源代码

关于 C++
  1. 1

    历史背景

  2. 2

    标准化

C++20 的快速概览
  1. 1

    C++20 简介

  2. 2

    四大核心

  3. 3

    核心语言

  4. 4

    标准库

  5. 5

    并发

概念
  1. 1

    两种错误的方法

  2. 2

    概念的优势

  3. 3

    使用概念的四种方法

  4. 4

    练习:实现算术概念

  5. 5

    解决方案:实现算术概念

  6. 6

    概念(Concepts)的使用场景

  7. 7

    关于 Concepts 的更多应用场景

  8. 8

    约束与非约束占位符

  9. 9

    简写函数模板

  10. 10

    预定义概念 - 第一部分

  11. 11

    预定义概念 - 第二部分

  12. 12

    定义概念

  13. 13

    练习:修改 sum 函数

  14. 14

    解决方案:修改 sum 函数

  15. 15

    需要表达式

  16. 16

    相等与排序的概念

  17. 17

    概念 SemiRegular 和 Regular

  18. 18

    练习:简化泛型函数

  19. 19

    解决方案:简化泛型函数

  20. 20

    总结概念

  21. 21

    自我测试:C++20中的概念

模块
  1. 1

    模块化的需求

  2. 2

    模块的优点

  3. 3

    第一个示例

  4. 4

    编译与使用

  5. 5

    导出

  6. 6

    模块结构指南

  7. 7

    模块接口单元和模块实现单元

  8. 8

    子模块和模块分区

  9. 9

    模块中的模板

  10. 10

    模块链接

  11. 11

    头文件单元

  12. 12

    自我测试:C++20中的模块

三路比较运算符
  1. 1

    C++20 之前的比较方式

  2. 2

    编译器生成的三路比较运算符

  3. 3

    重写表达式

  4. 4

    练习:扩展 MyInt 类

  5. 5

    解决方案:扩展 MyInt 类

  6. 6

    用户定义和自动生成的比较运算符

  7. 7

    自我测试:三路比较运算符

指定初始化
  1. 1

    聚合初始化

  2. 2

    类成员的命名初始化

  3. 3

    练习:检测窄化转换

  4. 4

    解决方案:检测窄化转换

  5. 5

    自我测试:指定初始化

新关键字:consteval 和 constinit
  1. 1

    consteval 关键字

  2. 2

    constinit 关键字

  3. 3

    函数执行与变量初始化

  4. 4

    解决静态初始化顺序问题

  5. 5

    自我测试:consteval 和 constinit

模板优化
  1. 1

    条件性显式构造函数

  2. 2

    练习:管理隐式转换

  3. 3

    解决方案:管理隐式转换

  4. 4

    非类型模板参数

  5. 5

    自我测试:模板优化

Lambda 改进
  1. 1

    lambda 的模板参数

  2. 2

    this指针的隐式拷贝检测

  3. 3

    未求值上下文与无状态 Lambda

  4. 4

    自我测试:Lambda 改进

C++20 中的新属性
  1. 1

    属性简介

  2. 2

    [[nodiscard("reason")]] 属性

  3. 3

    [[likely]] 和 [[unlikely]] 属性

  4. 4

    [[no_unique_address]] 属性

  5. 5

    自我测试:C++20中的新属性

核心语言的进一步改进
  1. 1

    volatile 关键字

  2. 2

    带初始化的基于范围的 for 循环

  3. 3

    虚拟常量表达式函数

  4. 4

    UTF-8 字符串的新字符类型:char8_t

  5. 5

    在局部作用域中使用枚举

  6. 6

    位字段的默认成员初始化

范围库
  1. 1

    ranges 库概述

  2. 2

    练习:计算平均值

  3. 3

    解决方案:计算平均值

  4. 4

    概念:范围与视图

  5. 5

    直接作用于容器

  6. 6

    函数组合

  7. 7

    惰性求值

  8. 8

    Python 的一种风格

  9. 9

    练习:实现 Python 的 map 函数

  10. 10

    解决方案:实现 Python 的 map 函数

  11. 11

    自我测试:ranges 库

std::span
  1. 1

    静态长度与动态长度的 std::span

  2. 2

    推断连续对象序列的大小

  3. 3

    从指针和大小创建一个 std::span

  4. 4

    修改引用的对象

  5. 5

    访问 std::span 的元素

  6. 6

    一个可修改元素的固定范围

  7. 7

    自我测试:std::span 容器

容器改进
  1. 1

    constexpr 容器与算法

  2. 2

    C++20 中的 std::array 容器

  3. 3

    一致的容器清除

  4. 4

    用于关联容器的 contains

  5. 5

    练习:删除大写字母

  6. 6

    解决方案:删除大写字母

  7. 7

    字符串前缀和后缀检查

  8. 8

    自我测试:容器优化

算术工具
  1. 1

    整数的安全比较

  2. 2

    数学常量

  3. 3

    中点与线性插值

  4. 4

    位操作

  5. 5

    练习:分析输出

  6. 6

    解决方案:分析输出

  7. 7

    自我测试:算术工具

日历与时区
  1. 1

    一天中的时间

  2. 2

    日历日期

  3. 3

    日期验证

  4. 4

    查询日历日期和星期几

  5. 5

    计算序数日期

  6. 6

    时区

  7. 7

    自我测试:日历与时区

格式化库
  1. 1

    格式化库概述

  2. 2

    格式化字符串

  3. 3

    用户定义的类型

  4. 4

    自我测试:格式化库

标准库的进一步改进
  1. 1

    C++20 中的 std::bind_front 库

  2. 2

    C++20 中的 std::is_constant_evaluated 库

  3. 3

    C++20 中的 std::source_location 库

协程
  1. 1

    协程概述

  2. 2

    协程的特性

  3. 3

    框架

  4. 4

    可等待对象与等待者

  5. 5

    工作流程

  6. 6

    co_return 关键字

  7. 7

    co_yield 关键字

  8. 8

    co_await 关键字

  9. 9

    自我测试:协程

原子操作
  1. 1

    std::atomic_ref 概览

  2. 2

    std::atomic_ref 的特化

  3. 3

    原子智能指针

  4. 4

    std::atomic_flag 扩展

  5. 5

    线程的一次性同步

  6. 6

    std::atomic 扩展

  7. 7

    练习:尝试不同的同步技术

  8. 8

    解决方案:尝试不同的同步技术

  9. 9

    自我测试:原子操作

信号量
  1. 1

    信号量概述

  2. 2

    使用信号量进行线程同步

  3. 3

    自我测试:信号量

门闩和屏障
  1. 1

    门闩和屏障概述

  2. 2

    std::latch

  3. 3

    std::barrier

  4. 4

    自我测试:门闩与屏障

协作中断
  1. 1

    协作式中断线程概述

  2. 2

    condition_variable_any 的新等待重载

  3. 3

    自我测试:协作中断

std::jthread
  1. 1

    自动 join(orientation)

  2. 2

    std::jthread 的协作式中断

  3. 3

    自我测试:std::jthread

同步输出流
  1. 1

    使用 std::cout 的输出流

  2. 2

    练习:同步输出

  3. 3

    解决方案:同步输出

  4. 4

    get_wrapped 函数

  5. 5

    自我测试:同步输出流

案例研究
  1. 1

    案例研究一:线程的快速同步

  2. 2

    案例研究二:Future 的各种变体

  3. 3

    案例研究三:生成器的修改与泛化

  4. 4

    案例研究四:多种工作流程

总结
  1. 1

    接下来是什么?

C++23
  1. 1

    C++23 简介

  2. 2

    协程库中的协程类型

  3. 3

    协程库中的可等待类型和函数

  4. 4

    静态线程池在协程库中的应用

  5. 5

    模块化的标准库用于模块

  6. 6

    执行器

  7. 7

    网络库

C++23 及更高版本
  1. 1

    合约

  2. 2

    反射

  3. 3

    模式匹配

  4. 4

    关于 C++23 的更多信息

C++ 的特性测试
  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)