CPlusPlusThings
C++那些事
- [C++ 那些事](#c-那些事) - [重磅项目](#重磅项目) - [关于作者](#关于作者) - [项目运行](#项目运行) - [方式1: vscode + bazel](#方式1-vscode--bazel) - [方式2: docker](#方式2-docker) - [方式3: g++](#方式3-g) - [视频学习本项目](#视频学习本项目) - [飞书知识库](#飞书知识库) - [基础进阶](#基础进阶) - [实战系列](#实战系列) - [10 日狂练](#10-日狂练) - [重点实战练习](#重点实战练习) - [C++2.0 新特性](#c20-新特性) - [概况](#概况) - [C++11 新特性](#c11-新特性) - [C++14/17/20](#c141720) - [设计模式](#设计模式) - [STL 源码剖析](#stl-源码剖析) - [并发编程](#并发编程) - [C++ Concurrency in Action](#c-concurrency-in-action) - [多线程与多进程](#多线程与多进程) - [Th... The project is written primarily in C++, first published in 2019. It has gained significant community traction with 43,237 stars and 8,832 forks on GitHub. Key topics include: cplusplus, cpp, cpp11, cpp14.
C++ 那些事
<p align="center"> <a href="./README.md">🇨🇳 中文</a> | <a href="./README_EN.md">🇺🇸 English</a> </p> <p align="center"> <a href="https://github.com/Light-City/CPlusPlusThings/stargazers"> <img src="https://img.shields.io/github/stars/Light-City/CPlusPlusThings?style=flat-square&color=yellow" alt="GitHub Stars"> </a> <a href="https://github.com/Light-City/CPlusPlusThings/network/members"> <img src="https://img.shields.io/github/forks/Light-City/CPlusPlusThings?style=flat-square&color=blue" alt="GitHub Forks"> </a> <a href="https://github.com/Light-City/CPlusPlusThings/issues"> <img src="https://img.shields.io/github/issues/Light-City/CPlusPlusThings?style=flat-square&color=red" alt="GitHub Issues"> </a> <a href="LICENSE"> <img src="https://img.shields.io/github/license/Light-City/CPlusPlusThings?style=flat-square&color=green" alt="License"> </a> </p> <p align="center"> <strong>C++ 那些事 | 从入门到进阶的 C++ 学习之旅 | 深入理解现代 C++</strong> </p> </div>- C++ 那些事
C++ 那些事
感谢各位对《C++ 那些事》的支持,现将内容也同步至B站,以视频的方式展示,可以打开网站直接阅读~欢迎大家 star、转发、PR。
在线个人博客:光城的实验室
在线学习网站:C++那些事
- 中文名:C++ 那些事
- 英文名:Stories About C Plus Plus
这是一个适合初学者从<u>入门到进阶</u>的仓库,解决了<u>面试者与学习者</u>想要<u>深入 C++</u> 及如何<u>入坑 C++</u> 的问题。除此之外,本仓库拓展了更加深入的源码分析,多线程并发等的知识,是一个比较全面的 C++ 学习从入门到进阶提升的仓库。
🎯 适合人群: C++ 初学者、面试准备者、想系统学习 Modern C++ 的开发者
📚 涵盖内容: C++11/14/17/20 新特性、STL 源码剖析、设计模式、并发编程
🔧 实践导向: 配套完整代码示例和实战项目
重磅项目
推出一系列重磅项目,带大家实战学习C++,配合本开源项目学习,成长飞快!
直通点:戳这里
关于作者
公众号已开放两大入口,分别是专辑与菜单,可以直接在微信公众号上阅读《C++ 那些事》内容,配上该仓库的代码,将会非常的爽,建议大家关注一波。
个人公众号:guangcity
或者扫下面的二维码,欢迎大家反馈及 C++ 交流,本人在微信创建了 C++ 那些事交流群,优质的 C++ 资源交流区,期待大家关注上面公众号,点击公众号右下角->联系我,拉你入群。
关注我
如果觉得不错,关注我吧~
<table> <tbody> <tr> <th align="center" height="200" width="200"> <img src="./img/cpp.jpg" height="200" width="200"><br> 星球 </th> <th align="center" height="200" width="200"> <img src="./img/wechat.jpg" height="200" width="200"><br> 微信公众号 </th> </tr> </tbody> </table>项目运行
方式1: vscode + bazel
方式2: docker
新推出免开发环境,docker环境,大家可以pull下面镜像:
docker pull xingfranics/cplusplusthings:latest
方式3: g++
视频学习本项目
第三期:手把手共读HashTable,彻底搞懂C++ STL
第四期:手把手共读STL之enable_shared_from_this
第五期:手把手共读STL之线程,从C++11 thread到C++20 jthread
第六期:手把手共读STL之共读condition_variable、condition_variable_any
飞书知识库
基础进阶
const那些事static那些事this那些事inline那些事sizeof那些事- 函数指针那些事
- 纯虚函数和抽象类那些事
vptr_vtable那些事virtual那些事volatile那些事assert那些事- 位域那些事
extern那些事struct那些事struct与class那些事union那些事c实现c++多态那些事explicit那些事friend那些事using那些事::那些事enum那些事decltype那些事- 引用与指针那些事
- 宏那些事
实战系列
10 日狂练
重点实战练习
C++2.0 新特性
概况
C++2.0 是一个简称,意为「现代 C++」,包括 C++11/14/17/20。
C++11 新特性
-
Spaces in Template Expressions
cppvector<list<int> > //ok in each C++ version vector<list<int>> // before c++ 11 error error: ‘>>’ should be ‘> >’ within a nested template argument list,c++11后可以正常通过 -
cpp
for(decl:col) { statement } -
如果你自行定义了一个
ctor, 那么编译器就不会给你一个default ctor
如果强制加上=default, 就可以重新获得并使用default ctor. -
Alias(化名) Template (template typedef)
-
容器-结构与分类
- (1) 序列式容器包括:
array(C++2.0 新引入),vector,deque,list,forward_list(C++2.0 新引入) - (2) 关联式容器包括:
set/multiset,map/multimap - (3) 无序容器(C++2.0 新引入,更换原先
hash_xxx为unordered_xxx)包括:unordered_map/unordered_multimap,unordered_set/unordered_multiset
- (1) 序列式容器包括:
-
学习资料:https://www.bilibili.com/video/av51863195?from=search&seid=3610634846288253061
C++14/17/20
待更新...
设计模式
STL 源码剖析
STL 源码剖析:gcc 4.9.1
- array
- deque
- queue and stack
- list
- vector
- typename
- traits
- iterator
- 谈谈 STL 设计之 EBO 优化
- rb_tree
- set and multiset
- map and multimap
- hashtable
- myhashtable
- unordered_map
并发编程
C++ Concurrency in Action
学习资料:https://downdemo.gitbook.io/cpp-concurrency-in-action-2ed/
多线程与多进程
Threading In C++
学习自:
https://www.youtube.com/watch?v=eZ8yKZo-PGw&list=PLk6CEY9XxSIAeK-EAh3hB4fgNvYkYmghp&index=4
C++ 惯用法
你最喜欢的 c++ 编程风格惯用法是什么?
学习课程
极客时间《现代 C++ 实战 30 讲》
- 堆、栈、RAII:C++ 里该如何管理资源?
- 自己动手,实现 C++ 的智能指针
- 右值和移动究竟解决了什么问题?
- 容器 1
- 容器 2
- 异常
- 字面量、静态断言和成员函数说明符
- 是不是应该返回对象?
- 编译期多态:泛型编程和模板入门
- 译期能做些什么?一个完整的计算世界
- SFINAE:不是错误的替换失败是怎么回事?
- constexpr:一个常态的世界
- 函数对象和 lambda:进入函数式编程
- 内存模型和 atomic:理解并发的复杂性
工具篇
容器快捷输出工具
对吴老师的代码进行了修改,点击此处直通代码
输入:
cppmap<int, int> mp{ {1, 1}, {2, 4}, {3, 9}}; cout << mp << endl;
输出结果显示:
cpp{ 1 => 1, 2 => 4, 3 => 9 }
像 Python 一样简单输出(Jupyter Notebook)
观察编译过程变化
C++ 的 Debug 工具 dbg-macro
在 Linux 上的 Debug 工具 rr - 拥有回到过去的能力
拓展部分
一些问题
Contributors
Showing top 12 contributors by commit count.
