这门课的主题很明确:把 C++ 放到自动驾驶这个具体场景里讲,而不是再重复一遍通用语法。自动驾驶代码有几个绕不开的特点——硬实时、内存受限、多传感器并发、大量数值计算,这些约束会直接改变你写 C++ 的方式。课程从「为什么自动驾驶选 C++」切入,比较不同语言在延迟、内存控制、生态上的取舍,再顺着资源管理、多线程这条线往下走,落点是能写进工程里的代码习惯。

技术栈与语言边界

课程围绕现代 C++(C++11/14/17 的实用子集)展开,重点不在语法罗列,而在几个自动驾驶项目里真正吃力的地方:对象生命周期与所有权、RAII 与资源释放、智能指针的选用边界、移动语义、模板与编译期计算,以及多线程下的数据竞争和锁粒度。这些内容单看是八股,放进感知、预测、控制模块里就变成具体决策——比如点云和图像数据在管线中怎么传递才不产生无谓拷贝,回调与线程池怎么组织才不会把延迟抖上去。

课程结构与讲解顺序

整体是「动机—基础—资源管理—并发—实战」的推进方式。开头几节用比较的方式讲清楚语言选型,并给出学习方法上的对照(把编程语言和自然语言的学习路径做类比),让没有大型 C++ 工程经验的人先建立预期。中段进入编程中的资源管理,把内存、文件句柄、线程这些资源的获取与释放统一到 RAII 思路上,再延伸到多线程管理——线程创建、同步原语、任务拆分、线程安全的数据结构。章节之间不是并列的知识点,而是后一章依赖前一章的约定,适合按顺序跟。

可复用的工程模块

自动驾驶项目里反复出现的结构,在这门课里以代码形式给出参考实现,比较值得对照的有:

  • 资源封装类:把裸指针、句柄、锁包进对象,析构即释放,避免异常路径下的泄漏。
  • 线程与任务管理:线程池、生产者—消费者队列、回调调度,用来承接传感器数据的异步处理。
  • 数据结构与容器选择:在延迟和内存之间做取舍,什么时候用连续内存、什么时候用索引结构。
  • 模块接口设计:把算法实现与调用方解耦,方便替换和单元测试。

这些模块的价值不在于照抄,而在于理解它为什么这样分层、接口为什么这样定。把其中一两个抽出来,套进自己手头的工程里改一改,比看完视频就关掉要实在得多。

适合谁,以及怎么用

如果你已经会写基本的 C++,但没在大型工程里处理过资源生命周期和并发,这门课补的正是这一层。反过来,如果连指针、引用、类的基本语义都还不熟,建议先过一遍语言基础再回来,否则中段的多线程和资源管理会跟得很吃力。

学习方式上,建议每个章节都亲手把示例跑一遍,改参数、造异常、打断点看析构顺序,再试着把示例里的模式移植到一个小型项目里——比如一个从文件或仿真读取数据、经多线程处理、输出结果的最小管线。视频只提供讲解和演示,真正的理解来自你自己动手时踩的坑。资料包里的讲义可以当索引,遇到具体问题时回去查对应章节,而不是从头顺一遍。

一点提醒

自动驾驶的工程实践更新很快,课程覆盖的是相对稳定的语言与并发基础,工具链、框架和中间件部分需要结合你实际使用的平台去补。把这门课当成语言与工程习惯的底座,上面的应用层再按自己的方向延伸,是更合理的用法。

🔥 自动驾驶之心-面向自动驾驶的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++编程基础
  • 了解自动驾驶技术
  • 提升编程实战能力

🎉 祝您学习愉快!