这门课的主题很明确:把 C++ 放到自动驾驶这个具体场景里讲,而不是再重复一遍通用语法。自动驾驶代码有几个绕不开的特点——硬实时、内存受限、多传感器并发、大量数值计算,这些约束会直接改变你写 C++ 的方式。课程从「为什么自动驾驶选 C++」切入,比较不同语言在延迟、内存控制、生态上的取舍,再顺着资源管理、多线程这条线往下走,落点是能写进工程里的代码习惯。
技术栈与语言边界
课程围绕现代 C++(C++11/14/17 的实用子集)展开,重点不在语法罗列,而在几个自动驾驶项目里真正吃力的地方:对象生命周期与所有权、RAII 与资源释放、智能指针的选用边界、移动语义、模板与编译期计算,以及多线程下的数据竞争和锁粒度。这些内容单看是八股,放进感知、预测、控制模块里就变成具体决策——比如点云和图像数据在管线中怎么传递才不产生无谓拷贝,回调与线程池怎么组织才不会把延迟抖上去。
课程结构与讲解顺序
整体是「动机—基础—资源管理—并发—实战」的推进方式。开头几节用比较的方式讲清楚语言选型,并给出学习方法上的对照(把编程语言和自然语言的学习路径做类比),让没有大型 C++ 工程经验的人先建立预期。中段进入编程中的资源管理,把内存、文件句柄、线程这些资源的获取与释放统一到 RAII 思路上,再延伸到多线程管理——线程创建、同步原语、任务拆分、线程安全的数据结构。章节之间不是并列的知识点,而是后一章依赖前一章的约定,适合按顺序跟。
可复用的工程模块
自动驾驶项目里反复出现的结构,在这门课里以代码形式给出参考实现,比较值得对照的有:
- 资源封装类:把裸指针、句柄、锁包进对象,析构即释放,避免异常路径下的泄漏。
- 线程与任务管理:线程池、生产者—消费者队列、回调调度,用来承接传感器数据的异步处理。
- 数据结构与容器选择:在延迟和内存之间做取舍,什么时候用连续内存、什么时候用索引结构。
- 模块接口设计:把算法实现与调用方解耦,方便替换和单元测试。
这些模块的价值不在于照抄,而在于理解它为什么这样分层、接口为什么这样定。把其中一两个抽出来,套进自己手头的工程里改一改,比看完视频就关掉要实在得多。
适合谁,以及怎么用
如果你已经会写基本的 C++,但没在大型工程里处理过资源生命周期和并发,这门课补的正是这一层。反过来,如果连指针、引用、类的基本语义都还不熟,建议先过一遍语言基础再回来,否则中段的多线程和资源管理会跟得很吃力。
学习方式上,建议每个章节都亲手把示例跑一遍,改参数、造异常、打断点看析构顺序,再试着把示例里的模式移植到一个小型项目里——比如一个从文件或仿真读取数据、经多线程处理、输出结果的最小管线。视频只提供讲解和演示,真正的理解来自你自己动手时踩的坑。资料包里的讲义可以当索引,遇到具体问题时回去查对应章节,而不是从头顺一遍。
一点提醒
自动驾驶的工程实践更新很快,课程覆盖的是相对稳定的语言与并发基础,工具链、框架和中间件部分需要结合你实际使用的平台去补。把这门课当成语言与工程习惯的底座,上面的应用层再按自己的方向延伸,是更合理的用法。
🔥 自动驾驶之心-面向自动驾驶的C++实战教程
C++实战,深入自动驾驶核心
编辑点评
聚焦自动驾驶领域,深入讲解C++编程,结合实际案例,提升算法与编程能力。
⭐ 编辑推荐
本教程深入浅出地讲解C++在自动驾驶领域的应用,从基础到实战,助你掌握核心编程技巧。
✨ 课程亮点
课程目录
📁 第1章 课程介绍
2_1.1 自动驾驶为什么选择C++?不同编程语言比较.mp4 [129.3 MB]
1.面向自动驾驶的C++实战_第1章.pdf [2.4 MB]
3_1.2 如何有效学习C++?编程语言和自然语言比较.mp4 [87.0 MB]
4_1.3 面向群体和学后收获.mp4 [14.0 MB]
5_1.4 讲解思路和课程大纲.mp4 [47.0 MB]
📁 第6章 C++编程中的资源管理
6.3.5 多线程管理.mp4 [228.1 MB]
6.6 GPU管理:释放计算的潜能.mp4 [159.2 MB]
6.3.4 内存管理-内存池.mp4 [56.8 MB]
面向自动驾驶的C++实战_第6章.pdf [2.7 MB]
6.3.6 内存管理-移动语义和右值引用.mp4 [204.8 MB]
6.7 小结与作业.mp4 [135.7 MB]
6.4 多线程管理:梳理错综复杂的世界.mp4 [227.0 MB]
6.2 文件管理:数据存储的钥匙.mp4 [197.2 MB]
6.3.3 内存管理-再探RAII.mp4 [90.9 MB]
6.3.1 内存管理-内存布局.mp4 [96.0 MB]
6.3.2 内存管理-内存使用常见问题.mp4 [150.6 MB]
6.5 网络管理:连接信息高速公路.mp4 [142.0 MB]
6.1 计算机资源的使用.mp4 [155.2 MB]
📁 第3章 深入面向对象编程
面向自动驾驶的C++实战_第3章PPT【资源精选‖更多关注:CunworkNotes】.pdf [4.4 MB]
50_3.4.3模板元编程.mp4 [89.6 MB]
35_3.1.1 什么是面向对象编程.mp4 [68.6 MB]
49_3.4.2C++模板【公重号:CunWorkNotes】.mp4 [74.6 MB]
54_3.6.3资源管理与智能指针.mp4 [130.9 MB]
53_3.6.2异常处理.mp4 [36.0 MB]
55_3.7本章总结与感悟【更多精选‖公众号:CunWorknotes】 .mp4 [66.1 MB]
51_3.5标准模板库STL【持续更新‖免费提供:CunworknoteS】.mp4 [170.9 MB]
43_3.2.6 static类型.mp4 [60.4 MB]
44_3.3.1 封装【整理不易‖记得关注:CunWorKNotes】.mp4 [61.7 MB]
38_3.2.1 类和对象的关系【更多精选‖公众号:CunWorknotes】 .mp4 [30.4 MB]
46_3.3.3多态.mp4 [75.8 MB]
39_3.2.2 实现第一个自动驾驶模块吧.mp4 [44.1 MB]
42_3.2.5 this指针.mp4 [57.1 MB]
47_3.3.4C++类对象内存布局初探.mp4 [138.2 MB]
56_3.8本章作业.mp4 [18.1 MB]
37_3.1.3 面向对象编程的优势.mp4 [20.4 MB]
40_3.2.3 构造和析构.mp4 [105.1 MB]
41_3.2.4 复制和赋值.mp4 [138.6 MB]
45_3.3.2 继承.mp4 [114.8 MB]
52_3.6.1重载.mp4 [39.0 MB]
36_3.1.2 编程范式.mp4 [116.6 MB]
48_3.4.1泛型编程.mp4 [40.4 MB]
📁 第4章 软件开发过程与实践
1-14_441设计模式介绍【公重号:CunWorkNotes】.mp4 [32.0 MB]
1-18_445 设计模式小结.mp4 [66.0 MB]
1-16_443 结构型模式【持续更新‖免费提供:CunworknoteS】.mp4 [243.4 MB]
1-6_422Git的基本使用——以实际任务为例【公重号:CunWorkNotes】.mp4 [156.8 MB]
1-8_431软件测试.mp4 [142.5 MB]
1-1_411自动驾驶代码是怎么命名的?-背景.mp4 [30.3 MB]
1-3_413自动驾驶代码是怎么命名的?-面向工程开发的命名.mp4 [75.7 MB]
1-7_423Git使用的最佳实践.mp4 [83.7 MB]
1-9_432自动驾驶测试.mp4 [100.0 MB]
1-2_412自动驾驶代码是怎么命名的?-命名规范.mp4 [27.4 MB]
1-19_45 小结与作业.mp4 [67.3 MB]
1-12_433C++单元测试工具Gtest(三).mp4 [92.2 MB]
1-10_433C++单元测试工具Gtest(一).mp4 [95.9 MB]
1-4_414自动驾驶代码是怎么命名的?-命名规范的自动化工具.mp4 [35.8 MB]
面向自动驾驶的C++实战_第4章.pdf [4.1 MB]
1-5_421代码版本管理与GIT.mp4 [105.8 MB]
1-15_442创建型设计模式.mp4 [153.6 MB]
1-11_433C++单元测试工具Gtest(二).mp4 [152.1 MB]
1-17_444 行为型模式.mp4 [111.0 MB]
1-13_434其它工具与实践.mp4 [55.7 MB]
📁 第2章 C++基础
📁 代码
📁 代码
📁 chapter_2
main.cpp [545.0 B]
judge.cpp [314.0 B]
basic_type.cpp [252.0 B]
input.cpp [247.0 B]
namespace.cpp [301.0 B]
CMakeLists.txt [122.0 B]
loop.cpp [908.0 B]
hello_world.cpp [224.0 B]
error_output.cpp [193.0 B]
string.cpp [787.0 B]
enum.cpp [386.0 B]
pointer.cpp [701.0 B]
struct.cpp [390.0 B]
output.cpp [187.0 B]
jump.cpp [307.0 B]
function.cpp [476.0 B]
📁 chapter_3
📁 framework
routing_component.cpp [549.0 B]
routing_component.h [473.0 B]
CMakeLists.txt [351.0 B]
planning_component.h [301.0 B]
perception_component.h [346.0 B]
perception_component.cpp [416.0 B]
mainboard.cpp [1002.0 B]
planning_component.cpp [351.0 B]
component.h [439.0 B]
method_chaining.cpp [305.0 B]
routing_component.cpp [1.9 KB]
template.cpp [618.0 B]
family.cpp [901.0 B]
CMakeLists.txt [160.0 B]
static.cpp [757.0 B]
RoutingComponent_and_TopoGraph.cpp [2.1 KB]
meta_programming.cpp [791.0 B]
11_2.1.5 编译与链接工具介绍【整理不易‖记得关注:CunWorKNotes】.mp4 [64.2 MB]
18_2.3.1 顺序结构【更多精选‖公众号:CunWorknotes】 .mp4 [3.9 MB]
14_2.2.2 语句.mp4 [8.1 MB]
27_2.4.6 数据结构【优质资源‖关注:cunWorkNotes 解锁】.mp4 [12.1 MB]
8_2.1.2 C++中那些推荐的IDE.mp4 [22.5 MB]
32_2.6.2 指针.mp4 [38.0 MB]
24_2.4.3 枚举类型【持续更新‖免费提供:CunworknoteS】.mp4 [60.0 MB]
33_2.6.3 引用.mp4 [26.5 MB]
9_2.1.3 手动搭建C++开发环境.mp4 [31.7 MB]
26_2.4.5 复合数据类型struct.mp4 [33.6 MB]
31_2.6.1 堆和栈内存.mp4 [43.7 MB]
30_2.5.3 文件组织.mp4 [81.1 MB]
23_2.4.2 基础数据类型.mp4 [157.0 MB]
34_2.7 小结与作业.mp4 [18.3 MB]
29_2.5.2 函数.mp4 [92.4 MB]
15_2.2.3 基本输入输出流.mp4 [50.6 MB]
7_2.1.1 C++开发环境介绍.mp4 [34.9 MB]
28_2.5.1 模块化.mp4 [20.6 MB]
25_2.4.4 字符串.mp4 [73.4 MB]
22_2.4.1 自动驾驶中的数据流动.mp4 [31.5 MB]
10_2.1.4 代码是如何从文本到可执行程序的?.mp4 [64.8 MB]
6_面向自动驾驶的C++实战_第2章 PPT.pdf [5.1 MB]
16_2.2.4 注释.mp4 [32.1 MB]
19_2.3.2 循环结构.mp4 [84.1 MB]
13_2.2.1 第一个C++ 程序.mp4 [41.9 MB]
20_2.3.3 分支结构.mp4 [94.0 MB]
21_2.3.4 无条件转移结构.mp4 [16.9 MB]
17_2.2.5 命名空间.mp4 [85.7 MB]
12_2.1.6 Cmake和Baze构建工具.mp4 [79.7 MB]
📁 第7章 智能驾驶C++项目实战
7.2.5 Cyber RT简析-开发者工具【公重号:CunWorkNotes】.mp4 [57.8 MB]
面向自动驾驶的C++实战_第7章.pdf [3.4 MB]
7.4.4 代码调试运行和分析-Planning.mp4 [149.6 MB]
7.1 Baidu Apollo介绍.mp4 [174.1 MB]
7.5 C++实现神经网络模型.mp4 [358.2 MB]
7.4.2 代码调试运行和分析-云端仿真.mp4 [96.5 MB]
7.3.1 环境搭建与工具使用-Docker简介.mp4 [187.6 MB]
7.4.3 代码调试运行和分析-Routing.mp4 [241.4 MB]
7.2.2 Cyber RT简析-Component组件机制.mp4 [140.9 MB]
7.2.4 Cyber RT简析-文件配置和代码简析.mp4 [228.8 MB]
7.3.2 环境搭建与工具使用-搭建Apollo环境.mp4 [108.2 MB]
7.7 小结与作业.mp4 [28.6 MB]
7.2.1 Cyber RT简析-Cyber RT框架介绍.mp4 [92.0 MB]
7.4.1 代码调试运行和分析-本地运行.mp4 [237.2 MB]
7.2.3 Cyber RT简析-Message消息传递机制.mp4 [251.5 MB]
7.6 实战项目分享.mp4 [219.7 MB]
📁 第8八章 自动驾驶量产和功能安全
8.5.1 智驾C++的差异点【更多精选‖公众号:CunWorknotes】 .mp4 [59.0 MB]
8.3.3&4 C++性能优化的方式:精益求精.mp4 [189.7 MB]
8.2.6&7&8 C++性能分析的方法与工具.mp4 [157.2 MB]
8.1.2 C++程序的性能问题-主要概念.mp4 [84.6 MB]
8.3.5&6&7&8 C++性能优化的方式:精益求精.mp4 [241.8 MB]
8.3.9 C++性能优化的方式-常见的优化原则和套路.mp4 [146.5 MB]
8.2.1&2&3 C++性能分析的方法与工具.mp4 [186.7 MB]
8.2.4 C++性能分析的方法与工具-系统级性能分析.mp4 [168.3 MB]
8.4.3 代码规范与检查工具-MISRA规范.mp4 [147.6 MB]
8.1.3 C++程序的性能问题-性能分析的必要性.mp4 [98.1 MB]
8.4.1 代码规范与检查工具-为什么需要代码规范?.mp4 [128.7 MB]
8.4.2 代码规范与检查工具-代码规范.mp4 [134.5 MB]
8.4.4 代码规范与检查工具-静态分析工具.mp4 [48.0 MB]
8.3.1&2 C++性能优化的方式:精益求精.mp4 [169.9 MB]
8.2.5 C++性能分析的方法与工具-Profiler剖析工具.mp4 [215.1 MB]
8.1.1 C++程序的性能问题-性能优化的必要性.mp4 [94.5 MB]
面向自动驾驶的C++实战_第8章.pdf [3.8 MB]
8.5.2 功能安全和ISO26262.mp4 [127.1 MB]
8.6 小结与作业.mp4 [13.9 MB]
📁 第9章 工作心得
9.3 感悟分享.mp4 [95.6 MB]
9.2 关于面试.mp4 [113.8 MB]
9.1 课程总结.mp4 [100.4 MB]
📁 第5章 自动驾驶常用工具库
5.3.3 Apollo基础工具库——Math库.mp4 [195.6 MB]
面向自动驾驶的C++实战_第5章.pdf [1.9 MB]
5.4.1 其他知名库——OpenCV.mp4 [82.2 MB]
5.4.3 其他知名库——Boost库.mp4 [87.5 MB]
5.5 小结与作业.mp4 [127.9 MB]
5.1 实践与领域知识.mp4 [85.3 MB]
5.3.1 Apollo工具库——Log库.mp4 [129.5 MB]
5.2.2 Eigen的使用.mp4 [408.5 MB]
5.4.2 其他知名库——PCL库.mp4 [78.5 MB]
5.3.2 Apollo基础工具库——Time库.mp4 [133.8 MB]
5.2.1 Eigen库—简介.mp4 [58.0 MB]
5.3.4 Apollo基础工具库——其它Util库.mp4 [89.5 MB]适合人群
- C++开发者
- 自动驾驶爱好者
- 算法工程师
🎯 学习收获
- 掌握C++编程基础
- 了解自动驾驶技术
- 提升编程实战能力
🎉 祝您学习愉快!






