Content
15 Lessons • 0 Quizzes • 0 Challenges
入门
- 1
课程简介
- 2
课程内容与先修要求
- 3
Google Test 和 Google Benchmark 库
C++ 简介
- 1
简介
- 2
为什么选择C++?
- 3
C++ 的重要特性
- 4
C++ 与其他语言的比较
- 5
非性能相关的 C++ 语言特性
- 6
非性能相关的 C++ 语言特性(续)
- 7
摘要:C++ 简介
- 8
测验:C++入门
编译时编程
- 1
简介
- 2
模板元编程简介
- 3
模板创建
- 4
类型特性
- 5
使用常量表达式编程
- 6
if constexpr 语句
- 7
与运行时多态的比较
- 8
在编译时检查编程错误
- 9
约束与概念
- 10
约束与概念的语法概述
- 11
元编程的实际应用案例 I
- 12
元编程的现实应用案例 II
- 13
总结:编译时编程
- 14
测验:编译时编程
C++ 核心技术
- 1
简介
- 2
使用 auto 关键字进行自动类型推导
- 3
使用 auto 声明变量
- 4
指针的常量传播
- 5
移动语义详解
- 6
资源获取与五法则
- 7
命名变量与右值
- 8
默认移动语义与零规则
- 9
将 && 修饰符应用于类成员函数
- 10
尽可能使用值传递
- 11
测验:核心技巧 I
- 12
使用错误处理设计接口
- 13
类不变式
- 14
错误处理
- 15
可恢复的运行时错误
- 16
函数对象和lambda表达式
- 17
在捕获中初始化变量
- 18
修改 Lambda 成员变量
- 19
将 Lambda 表达式转换为 C 函数指针
- 20
实现一个简单的按钮类,使用 std::function
- 21
通用lambda表达式
- 22
摘要:C++ 核心技术
- 23
测验:核心技巧 II
核心工具类
- 1
简介
- 2
使用 std::optional 表示可选值
- 3
固定大小的异构集合
- 4
元组解包
- 5
可变模板参数包
- 6
动态大小的异构集合
- 7
使用 Variant 实现异构集合
- 8
实际应用示例 1
- 9
真实世界案例 2
- 10
摘要:常用工具
- 11
测验:常用工具
分析与性能度量
- 1
简介
- 2
渐近复杂度与大 O 表示法
- 3
插入排序的时间复杂度
- 4
摊销时间复杂度
- 5
要测量什么以及如何测量?
- 6
性能特性
- 7
性能计数器
- 8
了解你的代码和热点区域
- 9
微基准测试
- 10
一个微基准测试示例
- 11
摘要:性能分析与度量
- 12
测验:性能分析与度量
代理对象与延迟求值
- 1
简介
- 2
介绍惰性求值与代理对象
- 3
使用代理对象避免创建对象(concept)
- 4
推迟平方根计算
- 5
实现 LengthProxy 对象
- 6
创意的运算符重载与代理对象
- 7
摘要:代理对象与延迟求值
- 8
测验:代理对象与惰性求值
数据结构
- 1
简介
- 2
计算机内存的特性
- 3
标准库容器
- 4
双端队列、列表、前向列表和基本字符串
- 5
关联容器
- 6
哈希与相等性
- 7
容器适配器
- 8
使用视图
- 9
一些性能考虑
- 10
并行数组
- 11
通过使用并行数组缩小需要遍历的数据量
- 12
总结:数据结构
- 13
测验:数据结构
并发
- 1
简介
- 2
理解并发的基础知识
- 3
数据竞争
- 4
C++中的并发编程
- 5
并发编程中的高级概念
- 6
并发编程中的错误处理最佳实践
- 7
C++20 中的其他同步原语
- 8
使用信号量进行通信和资源计数
- 9
C++中的原子支持
- 10
使用 shared_ptr 和原子引用的多线程编程
- 11
C++ 内存模型
- 12
无锁编程
- 13
性能指南
- 14
总结:并发
- 15
测验:并发
算法
- 1
简介
- 2
介绍标准库算法
- 3
解决日常问题
- 4
更多日常问题
- 5
迭代器和范围
- 6
迭代器类别
- 7
标准算法的特点
- 8
使用C++算法的优势
- 9
编写和使用泛型算法
- 10
最佳实践
- 11
使用标准算法替代原始的 for 循环
- 12
摘要:算法
- 13
测验:算法
协程与惰性生成器
- 1
简介
- 2
C++协程简介
- 3
在CPU上执行子程序和协程
- 4
无栈协程与有栈协程
- 5
C++中的协程
- 6
一个最小但完整的示例
- 7
避免悬空引用
- 8
生成器
- 9
解决生成器问题
- 10
使用生成器的真实世界示例
- 11
总结:协程与惰性生成器
- 12
测验:协程与惰性生成器
范围和视图
- 1
简介
- 2
范围库的提出动机
- 3
理解范围库中的视图
- 4
范围视图:延迟求值、非修改性迭代与实例化
- 5
标准库中的视图
- 6
摘要:范围与视图
- 7
测验:范围与视图
使用协程进行异步编程
- 1
简介
- 2
可等待类型再探
- 3
实现一个简单的任务类型(第一部分)
- 4
实现一个基础的任务类型(第二部分)
- 5
同步等待任务完成
- 6
封装基于回调的 API
- 7
使用 Boost.Asio 的并发服务器
- 8
摘要:使用协程进行异步编程
内存管理
- 1
简介
- 2
计算机内存
- 3
进程内存
- 4
内存中的对象
- 5
内存对齐
- 6
填充
- 7
内存所有权
- 8
智能指针
- 9
小对象优化
- 10
自定义内存管理
- 11
自定义内存分配器
- 12
使用多态内存分配器
- 13
摘要:内存管理
- 14
测验:内存管理
并行算法
- 1
简介
- 2
并行性的重要性
- 3
实现并行的 std::transform
- 4
分治法
- 5
实现并行的 std::count_if() 和 std::copy_if()
- 6
方法一:使用同步写入位置
- 7
方法二:将算法分为两个部分
- 8
并行标准库算法
- 9
无序策略
- 10
并行算法的新增与改进
- 11
基于索引的 for 循环并行化
- 12
总结:并行算法
- 13
测验:并行算法
Certificate of Completion
Showcase your accomplishment by sharing your certificate of completion.
Course Author:Anonymous User