GitHub - Light-City/CPlusPlusThings: C++那些事
Light-City/
C++那些事
light-city.club/sc/
6.7k stars 1.5k forks
Star
Watch
master
Go to file
Latest commit
Light-City
…
Aug 23, 2020
Merge pull request#53from ccwanggl/master
Mix the develop tools and compiler?
9b6ac0e
Git stats
Files
Type
Name
Commit time
basic_content
Aug 23, 2020
basic_content
c++2.0/c++11
Mar 3, 2020
c++2.0/c++11
codingStyleIdioms
Dec 12, 2019
codingStyleIdioms
concurrency
Jul 18, 2020
concurrency
design_pattern
Jul 6, 2020
design_pattern
effective_c++
Nov 5, 2019
effective_c++
english/basic_content
Jul 20, 2020
english/basic_content
extension/some_problem
Mar 3, 2020
extension/some_problem
img
May 30, 2020
img
learn_class/modern_C++_30
Mar 3, 2020
learn_class/modern_C++_30
practical_exercises
Jul 28, 2020
practical_exercises
src_analysis/stl
Jun 13, 2020
src_analysis/stl
tool
Mar 3, 2020
tool
..gitignore.un~
Nov 5, 2019
..gitignore.un~
.README.md.un~
Apr 5, 2020
.README.md.un~
.com.sh.un~
Nov 5, 2019
.com.sh.un~
.gitignore
Nov 5, 2019
.gitignore
.gitignore~
Nov 5, 2019
.gitignore~
README.md
Aug 23, 2020
README.md
README_EN.md
Jul 21, 2020
README_EN.md
View codeREADME.md
C++ 那些事
English version is here
感谢各位对《C++ 那些事》的支持,现将内容也同步至网站,可以打开网站直接阅读~欢迎大家 star、转发、PR。
直通点
https://light-city.club/sc/关于作者
公众号已开放两大入口,分别是专辑与菜单,可以直接在微信公众号上阅读《C++那些事》内容,配上该仓库的代码,将会非常的爽,建议大家关注一波。
个人公众号:guangcity
欢迎大家反馈及C++交流,本人在微信创建了C++那些事交流群,优质的C++资源交流区,期待大家关注上面公众号,点击公众号右下角->联系我,拉你入群。
项目运行
- 代码环境
Ubuntu 18.04 - 编辑工具
CLion - 编译器
gcc/g++
尽量用g++,因为一开始我用的vim写的,所以纯g++,后来用编译器CLion,部分有CMakeLists.txt文件,直接导入就行,后面会更新这个文件包含整个项目,持续关注~
0.项目概要
- 中文名:C++ 那些事
- 英文名:Stories About C Plus Plus
这是一个适合初学者从入门到进阶的仓库,解决了面试者与学习者想要深入 C++及如何入坑 C++的问题。除此之外,本仓库拓展了更加深入的源码分析,多线程并发等的知识,是一个比较全面的 C++ 学习从入门到进阶提升的仓库。
1.基础进阶
- const 那些事
- static 那些事
- this 那些事
- inline 那些事
- sizeof 那些事
- 函数指针那些事
- 纯虚函数和抽象类那些事
- vptr_vtable 那些事
- virtual 那些事
- volatile 那些事
- assert 那些事
- 位域那些事
- extern 那些事
- struct 那些事
- struct 与 class 那些事
- union 那些事
- c 实现 c++ 多态那些事
- explicit 那些事
- friend 那些事
- using 那些事
- :: 那些事
- enum 那些事
- decltype 那些事
- 引用与指针那些事
-
2.实战系列
2.1 10日狂练
基本c++语法
递归、结构体、枚举、静态变量等
函数
函数深入
继承多态
虚函数、抽象类
运算符重载
模板与STL
异常
2.2 重点实战练习
├── 中括号重载.cpp ├── 时钟++运算符重载.cpp ├── 运算符重载之强制转换.cpp └── 重载圆括号的时钟.cpp
├── 函数模板.cpp
├── 动态数组.cpp
├── 字典插入与查找.cpp
├── 异常捕获.cpp
├── 类模板之栈.cpp
├── 类模板特化之数组.cpp
├── 继承与封装.cpp
├── 读写文件综合题.cpp ├── 输入输出运算符重载.cpp ├── 输入输出重载.cpp ├── 输出格式.cpp
3.C++2.0 新特性
3.0 概况
C++2.0 是一个简称,意为「现代 C++」,包括 C++11/14/17/20。
3.1 C++11 新特性
- Variadic Templates
- Spaces in Template Expressions
vector > //ok in each C++ version vector
> // before c++ 11 error error: ‘>>’ should be ‘> >’ within a nested template argument list,c++11后可以正常通过
- nullptr and nullptr_t
- Automatic Type Deduction with auto
- Uniform Initialization
- initializer_list
- explicit for ctors taking more than one argument
- range-based for statement
for(decl:col) { statement }
- =default,=delete
如果你自行定义了一个 ctor,那么编译器就不会给你一个 default ctor 如果强制加上 =default,就可以重新获得并使用 default ctor. - Alias(化名)Template(template typedef)
- template template parameter
- type alias
- noexcept
- override
- final
- decltype
- lambda
- Rvalue reference
- move aware class
- 容器-结构与分类
- (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) 序列式容器包括:
- Hash Function
tuple
学习资料:https://www.bilibili.com/video/av51863195?from=search&seid=36106348462882530613.2 C++14/17/20
4.设计模式
-
5. STL 源码剖析
STL 源码剖析:gcc 4.9.1
- deque
- queue and stack
- list
- vector
- typename
- traits
- iterator
- 谈谈 STL 设计之 EBO 优化
- rb_tree
- set and multiset
- map and multimap
- hashtable
- myhashtable
-
6. 并发编程
6.1 C++ Concurrency in Action
- 第二章
学习资料:https://chenxiaowei.gitbook.io/cpp_concurrency_in_action/
6.2 多线程与多进程
6.2.1 Threading In C++
- 介绍
- 创建线程的五种类型
- Join 与 Detachs
- mutex in C++ Threading
学习自: https://www.youtube.com/watch?v=eZ8yKZo-PGw&list=PLk6CEY9XxSIAeK-EAh3hB4fgNvYkYmghp&index=4
7. C++ 惯用法
你最喜欢的 c++ 编程风格惯用法是什么?
- 1.类初始化列表
- 2.枚举类替换命名空间
- 3.RAII(资源获取即初始化)
- 4.copy and swap
-
8.学习课程
8.1 极客时间《现代 C++ 实战 30 讲》
- 自己动手,实现 C++ 的智能指针
- 右值和移动究竟解决了什么问题?
- 容器 1
- 容器 2
- 异常
- 字面量、静态断言和成员函数说明符
- 是不是应该返回对象?
- 编译期多态:泛型编程和模板入门
- 译期能做些什么?一个完整的计算世界
- SFINAE:不是错误的替换失败是怎么回事?
- constexpr:一个常态的世界
- 函数对象和 lambda:进入函数式编程
-
9.工具篇
9.1 容器快捷输出工具
对吴老师的代码进行了修改,点击此处直通代码
输入:
mapmp{ {1, 1}, {2, 4}, {3, 9}}; cout << mp << endl;
输出结果显示:
{ 1 => 1, 2 => 4, 3 => 9 }9.2 像 Python 一样简单输出(Jupyter Notebook)
-
9.3 观察编译过程变化
-
9.4 C++ 的 Debug 工具 dbg-macro
-
10.拓展部分
10.1 一些问题
-
11.贡献者
| 贡献人 | 地址 | | —- | —- | | 光城 | https://github.com/Light-City | | ChungZH | https://github.com/ChungZH | | xliu79 | https://github.com/xliu79 |
12.赞助我
如果觉得不错,赞助我吧~
![]() |
![]() |
---|---|
About
C++那些事
light-city.club/sc/