An open API service indexing awesome lists of open source software.

https://github.com/ascendho/cpp-bootcamp

🏕️ 卡内基梅隆大学为选修 15-445/645(Intro to Database Systems)开展的 C++ 语法迷你训练营,旨在提供现代 C++ 编码的基本介绍,涵盖引用和移动语义、模版、标准库(STL)容器、内存、同步基元等概念
https://github.com/ascendho/cpp-bootcamp

bootcamp cmu cpp

Last synced: 6 months ago
JSON representation

🏕️ 卡内基梅隆大学为选修 15-445/645(Intro to Database Systems)开展的 C++ 语法迷你训练营,旨在提供现代 C++ 编码的基本介绍,涵盖引用和移动语义、模版、标准库(STL)容器、内存、同步基元等概念

Awesome Lists containing this project

README

          

## C++ 现代语法特征训练营

![image-20250825222353105](assets/image-20250825222353105.png)

> 本训练营旨在为你提供现代 C++ 编程的基础入门知识。C++ 语言的特性极为丰富且涉猎广泛,无法在一次训练营中全部涵盖,而且坦白说,这门语言最好通过实践来学习。工作人员相信,15-445 这门课程会让你成为一名更自信的 C++ 程序员!不过,我们确实会涉及一些在完成编程作业时必须掌握的 C++ 知识点。本教程不涵盖基础的 C/C++ 语法,主要介绍 C++ 的编程特性,尤其是那些 C 语言中不存在的概念。

本仓库主要记录个人对该训练营内容的学习过程,并整理原项目代码文件的结构,使得更易于上手和使用;同时对英文注释进行翻译,对暂时具有语言障碍的新手更加友好;最后对大部分概念补充了一些简要的笔记,可供有需要的人参考。

## 索引表

| 序号 | 章节 | 代码 | 笔记 |
| :--: | :---------------------------: | :----------------------------------------------------------: | :-------------------------------------------------: |
| 1 | References and Move Semantics | references.cpp | N/A |
| | | move_semantics.cpp | 移动语义.md |
| | | move_constructors.cpp | 移动构造函数.md |
| 2 | C++ Templates | templated_functions.cpp | 模版函数.md |
| | | templated_classes.cpp | N/A |
| 3 | Misc | wrapper_class.cpp | 包装类.md |
| | | iterator.cpp | 迭代器.md |
| | | namespaces.cpp | 命名空间.md |
| 4 | Containers | vectors.cpp | 向量.md |
| | | sets.cpp | 集合.md |
| | | unordered_maps.cpp | 哈希表.md |
| | | auto.cpp | auto.md |
| 5 | Memory | unique_ptr.cpp | 智能指针I.md |
| | | shared_ptr.cpp | 智能指针II.md |
| 6 | Synch Primitives | mutex.cpp | 互斥锁.md |
| | | scoped_lock.cpp | 作用域锁.md |
| | | condition_variable.cpp | 条件变量.md |
| | | rwlock.cpp | 读写锁.md |
| - | spring2024 | s24_my_ptr.cpp | N/A |

## 构建方式

该训练营包含若干 C++ 代码文件,位于各章节目录下,建议深入研读。每个代码文件均可编译为与其同名的可执行文件。请使用 CMake 构建这些可执行文件,以下一组命令应能完成所有可执行文件的构建:

```cmake
$ mkdir build
$ cd build
$ cmake .. // 调用CMake工具,去上级目录寻找CMakeLists.txt文件
$ make -j8 // 调用Make工具来执行编译,-j表示并行,8表示最多使用8个CPU核心
```

执行这些命令后,生成的可执行文件将位于 `build` 目录中。例如, `1 - References and Move Semantics/references.cpp` 文件会编译为 `references` 可执行文件,位于 `./build` 目录下。其余代码文件亦是如此。

## 参考资源

虽然这次集训营力求尽可能全面,但它仍然只涵盖了使用现代 C++ 的基础内容,在你应用 C++ 构建大型程序的过程中,还需要查阅很多其它可用的资源。下面列举几例,它们的内容都非常全面(比这次集训营全面得多),但在可读性方面可能有所欠缺。但总的来说,我认为还是应该试着去阅读并理解这些资料,尤其是在做项目的时候。

1. cppreference:非官方但相当准确的 C++ 和 C 标准摘要及示例
2. cplusplus:包含 C++语言教程C++库参考手册 两部分内容
3. 《现代 C++ 教程》:此GitHub仓库包含一些实用的信息和练习题

## 许可证

1. 本项目基于 15445-bootcamp 进行翻译和扩展,原项目版权(包括源代码文件)归属 **原作者** 所有,扩充的笔记内容归属本人所有,均遵循 Apache License 2.0 协议。
2. 本仓库作为个人学习进度的记录,包括相关材料的整理备份、翻译和补充,并对有需要的人提供帮助。