Content
31 Lessons • 0 Quizzes • 0 Challenges
简介
- 1
入门
- 2
约定
- 3
源代码
关于 C++
- 1
历史背景
- 2
标准化
C++20 的快速概览
- 1
C++20 简介
- 2
四大核心
- 3
核心语言
- 4
标准库
- 5
并发
概念
- 1
两种错误的方法
- 2
概念的优势
- 3
使用概念的四种方法
- 4
练习:实现算术概念
- 5
解决方案:实现算术概念
- 6
概念(Concepts)的使用场景
- 7
关于 Concepts 的更多应用场景
- 8
约束与非约束占位符
- 9
简写函数模板
- 10
预定义概念 - 第一部分
- 11
预定义概念 - 第二部分
- 12
定义概念
- 13
练习:修改 sum 函数
- 14
解决方案:修改 sum 函数
- 15
需要表达式
- 16
相等与排序的概念
- 17
概念 SemiRegular 和 Regular
- 18
练习:简化泛型函数
- 19
解决方案:简化泛型函数
- 20
总结概念
- 21
自我测试:C++20中的概念
模块
- 1
模块化的需求
- 2
模块的优点
- 3
第一个示例
- 4
编译与使用
- 5
导出
- 6
模块结构指南
- 7
模块接口单元和模块实现单元
- 8
子模块和模块分区
- 9
模块中的模板
- 10
模块链接
- 11
头文件单元
- 12
自我测试:C++20中的模块
三路比较运算符
- 1
C++20 之前的比较方式
- 2
编译器生成的三路比较运算符
- 3
重写表达式
- 4
练习:扩展 MyInt 类
- 5
解决方案:扩展 MyInt 类
- 6
用户定义和自动生成的比较运算符
- 7
自我测试:三路比较运算符
指定初始化
- 1
聚合初始化
- 2
类成员的命名初始化
- 3
练习:检测窄化转换
- 4
解决方案:检测窄化转换
- 5
自我测试:指定初始化
新关键字:consteval 和 constinit
- 1
consteval 关键字
- 2
constinit 关键字
- 3
函数执行与变量初始化
- 4
解决静态初始化顺序问题
- 5
自我测试:consteval 和 constinit
模板优化
- 1
条件性显式构造函数
- 2
练习:管理隐式转换
- 3
解决方案:管理隐式转换
- 4
非类型模板参数
- 5
自我测试:模板优化
Lambda 改进
- 1
lambda 的模板参数
- 2
this指针的隐式拷贝检测
- 3
未求值上下文与无状态 Lambda
- 4
自我测试:Lambda 改进
C++20 中的新属性
- 1
属性简介
- 2
[[nodiscard("reason")]] 属性
- 3
[[likely]] 和 [[unlikely]] 属性
- 4
[[no_unique_address]] 属性
- 5
自我测试:C++20中的新属性
核心语言的进一步改进
- 1
volatile 关键字
- 2
带初始化的基于范围的 for 循环
- 3
虚拟常量表达式函数
- 4
UTF-8 字符串的新字符类型:char8_t
- 5
在局部作用域中使用枚举
- 6
位字段的默认成员初始化
范围库
- 1
ranges 库概述
- 2
练习:计算平均值
- 3
解决方案:计算平均值
- 4
概念:范围与视图
- 5
直接作用于容器
- 6
函数组合
- 7
惰性求值
- 8
Python 的一种风格
- 9
练习:实现 Python 的 map 函数
- 10
解决方案:实现 Python 的 map 函数
- 11
自我测试:ranges 库
std::span
- 1
静态长度与动态长度的 std::span
- 2
推断连续对象序列的大小
- 3
从指针和大小创建一个 std::span
- 4
修改引用的对象
- 5
访问 std::span 的元素
- 6
一个可修改元素的固定范围
- 7
自我测试:std::span 容器
容器改进
- 1
constexpr 容器与算法
- 2
C++20 中的 std::array 容器
- 3
一致的容器清除
- 4
用于关联容器的 contains
- 5
练习:删除大写字母
- 6
解决方案:删除大写字母
- 7
字符串前缀和后缀检查
- 8
自我测试:容器优化
算术工具
- 1
整数的安全比较
- 2
数学常量
- 3
中点与线性插值
- 4
位操作
- 5
练习:分析输出
- 6
解决方案:分析输出
- 7
自我测试:算术工具
日历与时区
- 1
一天中的时间
- 2
日历日期
- 3
日期验证
- 4
查询日历日期和星期几
- 5
计算序数日期
- 6
时区
- 7
自我测试:日历与时区
格式化库
- 1
格式化库概述
- 2
格式化字符串
- 3
用户定义的类型
- 4
自我测试:格式化库
标准库的进一步改进
- 1
C++20 中的 std::bind_front 库
- 2
C++20 中的 std::is_constant_evaluated 库
- 3
C++20 中的 std::source_location 库
协程
- 1
协程概述
- 2
协程的特性
- 3
框架
- 4
可等待对象与等待者
- 5
工作流程
- 6
co_return 关键字
- 7
co_yield 关键字
- 8
co_await 关键字
- 9
自我测试:协程
原子操作
- 1
std::atomic_ref 概览
- 2
std::atomic_ref 的特化
- 3
原子智能指针
- 4
std::atomic_flag 扩展
- 5
线程的一次性同步
- 6
std::atomic 扩展
- 7
练习:尝试不同的同步技术
- 8
解决方案:尝试不同的同步技术
- 9
自我测试:原子操作
信号量
- 1
信号量概述
- 2
使用信号量进行线程同步
- 3
自我测试:信号量
门闩和屏障
- 1
门闩和屏障概述
- 2
std::latch
- 3
std::barrier
- 4
自我测试:门闩与屏障
协作中断
- 1
协作式中断线程概述
- 2
condition_variable_any 的新等待重载
- 3
自我测试:协作中断
std::jthread
- 1
自动 join(orientation)
- 2
std::jthread 的协作式中断
- 3
自我测试:std::jthread
同步输出流
- 1
使用 std::cout 的输出流
- 2
练习:同步输出
- 3
解决方案:同步输出
- 4
get_wrapped 函数
- 5
自我测试:同步输出流
案例研究
- 1
案例研究一:线程的快速同步
- 2
案例研究二:Future 的各种变体
- 3
案例研究三:生成器的修改与泛化
- 4
案例研究四:多种工作流程
总结
- 1
接下来是什么?
C++23
- 1
C++23 简介
- 2
协程库中的协程类型
- 3
协程库中的可等待类型和函数
- 4
静态线程池在协程库中的应用
- 5
模块化的标准库用于模块
- 6
执行器
- 7
网络库
C++23 及更高版本
- 1
合约
- 2
反射
- 3
模式匹配
- 4
关于 C++23 的更多信息
C++ 的特性测试
- 1
功能测试
Certificate of Completion
Showcase your accomplishment by sharing your certificate of completion.
Course Author:Anonymous User