Skip to content

Extra-Creativity/Modern-Cpp-Basics

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

109 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Modern-Cpp-Basics

现代C++基础课件与代码仓库,课程介绍与安排如下(也可详见课程主页)。需要编程环境至少支持C++23(如对于MSVC,至少使用Visual Studio 2022且更新至最新),在第六章也提供了一个简单的docker。

重要通知

  1. 尽管本课程名字中含有“基础”二字,但实际上探究了C++中许多困难的部分(如容器的实现算法)并具有先修要求,因此并不适合编程新手。
  2. 我在视频和作业中使用中文,而在PPT中使用英文。
  3. 本课程允许转载,只需要注明该视频的出处和我的名字。准确说,课程使用CC-BY-NC-SA 4.0协议。
  4. 由于这是我第一次讲课,因此必然在课程编排、作业及授课过程等存在不合理的情况,如果觉得学不下去并不一定是你的问题,可以再参考其他课程。

课程介绍

C++是高性能、低延时编程语言的不二之选,广泛应用于高频交易、游戏引擎、深度学习框架等各种性能敏感场景。然而,在许多学校的课程中,对C++的教授主要停止于C++98的知识,不符合一般工程的实践。随着C++的不断演进,现代C++已经提供了大量的新特性,使得编写C++更加容易。因此,本课程将全面而系统地介绍C++11到C++23的重大特性,并深入其中的一部分进行剖析,希望可以使得学生初步具备读懂工程代码、理解性能权衡、懂得如何安全编写C++的能力。

注:由于本意为方便北大大二本科生学习,因此课程的组织是先从本科生此时已经学习过的C++知识进行深入的(例如,把容器和算法的部分放到了非常前面的部分)。

课程先修要求

【计算机】:对于北大学生,要求先修计算概论(A)、程序设计实习(或软件设计实践)、计算机系统导论(ICS)、数据结构与算法。等价地,这需要先掌握如下知识:

  1. C++ 基础

    • 基本类型、数组、结构体、函数、指针、枚举、运算符
    • 基本 OOP:类、构造函数/析构函数、继承、多态、this 指针
    • 函数重载、运算符重载、拷贝构造/赋值
    • 模板基础、容器、左值引用
    • 基本 IO:cin/cout
  2. 计算机系统基础:已学习 Computer Systems: A Programmer's Perspective (CSAPP)。本书存在CMU的网课,详情可见CSDIY

  3. 数据结构与算法基础:任何基础的数据结构课程均可;本人推荐清华大学邓俊辉老师的数据结构课程(分为两部分)。提供的链接是学堂在线2026年课程的链接,该课程每年都会免费翻新出来;如果点进去发现已经收费了,可以在平台搜索“数据结构”来找到最新年度的免费课程。

【英语】:四级水平即可。

课时安排

【课时】:共安排 16 章节的课程,每节平均两个半小时(3学分课程),但具体时间随着内容复杂程度变化。第十六章作为补充章节话题较多,虽不是核心内容,但会相对较长。

【作业】:每章后会提供习题及示例代码,全部是编程任务;自第五章开始,每章提供部分或全部习题的答案。

【其它】:中文授课,英文课件;每节课的评论区及作业可能会出现纠错或补充,注意查看。

课程大纲与讲义

课程视频上传于bilibili

讲座 主题 资料
1 课程简介 课件 / 作业
2 基础复习与扩展 课件 / 作业
3 容器 课件 / 作业
4 Ranges与算法 课件 / 作业
5 生命周期与类型安全 课件 / 作业
6 多文件编程 课件 / 作业
7 错误处理 课件 / 作业
8 字符串与流 课件 / 作业
9 移动语义基础 课件 / 作业
10 值分类与移动语义 课件 / 作业
11 模板基础与移动语义 课件 / 作业
12 模板进阶 课件 / 作业
13 多线程 课件 / 作业
14 并发进阶 课件 / 作业
15 内存管理 课件 / 作业
16 补充与总结 课件 / 作业

推荐工具

鸣谢

感谢谷雨学长对部分课件内容进行了校对。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors