forked from Light-City/CPlusPlusThings
-
Notifications
You must be signed in to change notification settings - Fork 0
C++那些事
edward2755/CPlusPlusThings
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
# C++ 那些事 感谢各位对《C++ 那些事》的支持,现将内容也同步至网站,可以打开网站直接阅读~欢迎大家 star、转发、PR。 [直通点](https://light-city.club/sc/) ----------------------- ### 0.项目概要 - 中文名:**C++ 那些事** - 英文名:**Stories About C Plus Plus** 这是一个适合初学者从<u>**入门到进阶**</u>的仓库,解决了<u>**面试者与学习者**</u>想要<u>**深入 C++**</u>及如何<u>**入坑 C++**</u>的问题。除此之外,本仓库拓展了更加深入的源码分析,多线程并发等的知识,是一个比较全面的 C++ 学习从入门到进阶提升的仓库。 ### 1.基础进阶 - [const 那些事](./basic_content/const) - [static 那些事](./basic_content/static) - [this 那些事](./basic_content/this) - [inline 那些事](./basic_content/inline) - [sizeof 那些事](./basic_content/sizeof) - [函数指针那些事](./basic_content/func_pointer) - [纯虚函数和抽象类那些事](./basic_content/abstract) - [vptr_vtable 那些事](./basic_content/vptr_vtable) - [virtual 那些事](./basic_content/virtual) - [volatile 那些事](./basic_content/volatile) - [assert 那些事](./basic_content/assert) - [位域那些事](./basic_content/bit) - [extern 那些事](./basic_content/extern) - [struct 那些事](./basic_content/struct) - [struct 与 class 那些事](./basic_content/struct_class) - [union 那些事](./basic_content/union) - [c 实现 c++ 多态那些事](./basic_content/c_poly) - [explicit 那些事](./basic_content/explicit) - [friend 那些事](./basic_content/friend) - [using 那些事](./basic_content/using) - [:: 那些事](./basic_content/maohao) - [enum 那些事](./basic_content/enum) - [decltype 那些事](./basic_content/decltype) - [引用与指针那些事](./basic_content/pointer_refer) - [宏那些事](./basic_content/macro) ### 2.实战系列 #### 2.1 10日狂练 - [x] day1 基本c++语法 - [x] day2 递归、结构体、枚举、静态变量等 - [x] day3 函数 - [x] day4 函数深入 - [x] day5 继承多态 - [x] day6 虚函数、抽象类 - [x] day7 运算符重载 - [x] day8 模板与STL - [x] day9 异常 - [x] day10 文件与流 #### 2.2 重点实战练习 ├── [中括号重载.cpp](./practical_exercises/key_exercises/中括号重载.cpp) ├── [时钟++运算符重载.cpp](./practical_exercises/key_exercises/时钟++运算符重载.cpp) ├── [运算符重载之强制转换.cpp](./practical_exercises/key_exercises/运算符重载之强制转换.cpp) └── [重载圆括号的时钟.cpp](./practical_exercises/key_exercises/重载圆括号的时钟.cpp) ├── [函数模板.cpp](./practical_exercises/key_exercises/函数模板.cpp) ├── [动态数组.cpp](./practical_exercises/key_exercises/动态数组.cpp) ├── [字典插入与查找.cpp](./practical_exercises/key_exercises/字典插入与查找.cpp) ├── [异常捕获.cpp](./practical_exercises/key_exercises/异常捕获.cpp) ├── [类模板之栈.cpp](./practical_exercises/key_exercises/类模板之栈.cpp) ├── [类模板特化之数组.cpp](./practical_exercises/key_exercises/类模板特化之数组.cpp) ├── [继承与封装.cpp](./practical_exercises/key_exercises/继承与封装.cpp) ├── [读写文件综合题.cpp](./practical_exercises/key_exercises/读写文件综合题.cpp) ├── [输入输出运算符重载.cpp](./practical_exercises/key_exercises/输入输出运算符重载.cpp) ├── [输入输出重载.cpp](./practical_exercises/key_exercises/输入输出重载.cpp) ├── [输出格式.cpp](./practical_exercises/key_exercises/输出格式.cpp) ### 2.[C++2.0 新特性](./c++2.0) #### 2.0 概况 C++2.0 是一个简称,意为「现代 C++」,包括 C++11/14/17/20。 #### 2.1 [C++11 新特性](./c++2.0/c++11) - [Variadic Templates](./c++2.0/variadic) - Spaces in Template Expressions ```cpp vector<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后可以正常通过 ``` - [nullptr and nullptr_t](./c++2.0/nullptr.cpp) - [Automatic Type Deduction with auto](./c++2.0/auto.cpp) - [Uniform Initialization ](./c++2.0/uniform_initialization.cpp) - [initializer_list](./c++2.0/initializer.cpp) - [explicit for ctors taking more than one argument](./c++2.0/explicit.cpp) - [range-based for statement](./c++2.0/auto.cpp) ```cpp for(decl:col) { statement } ``` - [=default,=delete](./c++2.0/default_delete.cpp) 如果你自行定义了一个 ctor,那么编译器就不会给你一个 default ctor 如果强制加上 =default,就可以重新获得并使用 default ctor. - Alias(化名)Template(template typedef) - [alias.cpp](./c++2.0/alias.cpp) - [template_template.cpp](./c++2.0/template_template.cpp) - [template template parameter](./c++2.0/template_template.cpp) - [type alias](./c++2.0/type_alias.cpp) - [noexcept](./c++2.0/noexcept.cpp) - [override](./c++2.0/override.cpp) - [final](./c++2.0/final.cpp) - [decltype](./c++2.0/decltype.cpp) - [lambda](./c++2.0/lambda.cpp) - [Rvalue reference](./c++2.0/rvalue.cpp) - [move aware class](./c++2.0/move.cpp) - 容器-结构与分类 - (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` - [Hash Function](./c++2.0/hash.cpp) - [tuple](./c++2.0/tuple.cpp) 学习资料:https://www.bilibili.com/video/av51863195?from=search&seid=3610634846288253061 ### 2.2 C++14/17/20 待更新... ### 3.设计模式 - [单例模式](./design_pattern/singleton) ### 4. [STL 源码剖析](./src_analysis/stl) **STL 源码剖析:gcc 4.9.1** - [array](./src_analysis/stl/array.md) - [deque](./src_analysis/stl/deque.md) - [queue and stack](./src_analysis/stl/queue_stack.md) - [list](./src_analysis/stl/list.md) - [vector](./src_analysis/stl/vector.md) - [typename](./src_analysis/stl/typename.md) - [traits](./src_analysis/stl/traits.md) - [iterator](./src_analysis/stl/iterator.md) - [谈谈 STL 设计之 EBO 优化](./src_analysis/stl/谈谈STL设计之EBO优化.md) - [rb_tree](./src_analysis/stl/rb_tree.md) - [set and multiset](set_multiset.md) - [map and multimap](./src_analysis/stl/map_multimap.md) - [hashtable](./src_analysis/stl/hashtable.md) - [myhashtable](./src_analysis/stl/myhashtable.md) - [unordered_map](./src_analysis/stl/unordered_map.md) ### 4. [并发编程](./concurrency) #### 4.1 C++ Concurrency in Action - [第一章](./concurrency/concurrency_v1/chapter1) - [第二章](./concurrency/concurrency_v1/chapter2) 学习资料:https://chenxiaowei.gitbook.io/cpp_concurrency_in_action/ #### 4.2 多线程与多进程 ##### 4.2.1 Threading In C++ - [介绍](./concurrency/Threading_In_CPlusPlus/1.thread) - [创建线程的五种类型](./concurrency/Threading_In_CPlusPlus/2.create_type) - [Join 与 Detachs](./concurrency/Threading_In_CPlusPlus/3.join_detach) - [mutex in C++ Threading](./concurrency/Threading_In_CPlusPlus/4.mutex) > 学习自: > > https://www.youtube.com/watch?v=eZ8yKZo-PGw&list=PLk6CEY9XxSIAeK-EAh3hB4fgNvYkYmghp&index=4 ### 5. [C++ 惯用法](./codingStyleIdioms) ##### 你最喜欢的 c++ 编程风格惯用法是什么? - [1.类初始化列表](./codingStyleIdioms/1_classInitializers) - [2.枚举类替换命名空间](./codingStyleIdioms/2_enumclass_namespace) - [3.RAII(资源获取即初始化)](./codingStyleIdioms/3_RAII) - [4.copy and swap](./codingStyleIdioms/4_copy-swap) - [5.pImpl(指针指向具体实现)](./codingStyleIdioms/5_pImpl) ### 6.学习课程 #### 6.1 [极客时间《现代 C++ 实战 30 讲》](https://time.geekbang.org/channel/home) - [堆、栈、RAII:C++ 里该如何管理资源?](./learn_class/modern_C++_30/RAII) - [堆](./modern_++_30/RAII/heap.cpp) - [栈](./learn_class/modern_C++_30/RAII/stack.cpp) - [RAII](./learn_class/modern_C++_30/RAII/RAII.cpp) - [自己动手,实现 C++ 的智能指针](./learn_class/modern_C++_30/smart_ptr) - [auto_ptr、scope_ptr](./learn_class/modern_C++_30/smart_ptr/auto_scope.cpp) - [unique_ptr](./learn_class/modern_C++_30/smart_ptr/unique_ptr.cpp) - [shared_ptr](./learn_class/modern_C++_30/smart_ptr/shared_ptr.cpp) - [右值和移动究竟解决了什么问题?](./learn_class/modern_C++_30/reference) - [左值与右值](./learn_class/modern_C++_30/reference/reference.cpp) - [延长声明周期](./learn_class/modern_C++_30/reference/lifetime.cpp) - [引用折叠](./learn_class/modern_C++_30/reference/collapses.cpp) - [完美转发](./learn_class/modern_C++_30/reference/forward.cpp) - [不要返回本地变量的引用](./learn_class/modern_C++_30/reference/don'treturnReference.cpp) - [容器 1](./learn_class/modern_C++_30/container1) - [容器 2](./learn_class/modern_C++_30/container2) - [异常](./learn_class/modern_C++_30/exception) - [字面量、静态断言和成员函数说明符](./learn_class/modern_C++_30/literalAssert) - [是不是应该返回对象?](./learn_class/modern_C++_30/returnObj) - [编译期多态:泛型编程和模板入门](./learn_class/modern_C++_30/compilerpoly) - [译期能做些什么?一个完整的计算世界](./learn_class/modern_C++_30/compilercompute) - [SFINAE:不是错误的替换失败是怎么回事?](./learn_class/modern_C++_30/SFINAE) - [constexpr:一个常态的世界](./learn_class/modern_C++_30/constexpr) - [函数对象和 lambda:进入函数式编程](./learn_class/modern_C++_30/functionLambda) - [内存模型和 atomic:理解并发的复杂性](./learn_class/modern_C++_30/memorymodel_atomic) ### 7.工具篇 #### 7.1 [容器快捷输出工具](./tool/output) 对吴老师的代码进行了修改,[点击此处直通代码](./tool/output/output_container.h) 输入: ```cpp map<int, int> mp{ {1, 1}, {2, 4}, {3, 9}}; cout << mp << endl; ``` 输出结果显示: ```cpp { 1 => 1, 2 => 4, 3 => 9 } ``` #### 7.2 像 Python 一样简单输出(Jupyter Notebook) - [像 Python 一样玩 C/C++](./tool/像Python一样玩CC++.md) #### 7.3 观察编译过程变化 - [https://cppinsights.io](https://cppinsights.io/) #### 7.4 C++ 的 Debug 工具 dbg-macro - [C++ 的 Debug 工具 dbg-macro](./tool/C++的Debug工具dbg-macro.md) ### 8.拓展部分 #### 8.1 一些问题 - [C++ 中如何将 string 类型转换为 int 类型?](./extension/some_problem/string_int.md) ### 9.代码运行 - **代码环境** Ubuntu 18.04 - **工具** CLion gcc/g++ ### 10.贡献者 <table> <tbody> <tr> <th align="center" style="width: 80px;"> <a href="https://github.com/Light-City"> <img src="https://avatars2.githubusercontent.com/u/25699850?s=50&v=4" style="width: 50px;"><br> <sub>Francis</sub> </a><br> </th> <th align="center" style="width: 80px;"> <a href="https://github.com/ChungZH"> <img src="https://avatars1.githubusercontent.com/u/42088872?s=50&v=4" style="width: 50px;"><br> <sub>ChungZH</sub> </a><br> </th> </tr> </tbody> </table> ### 11.关于作者 个人公众号: ![](./img/wechat.jpg)
About
C++那些事
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published
Languages
- C++ 98.0%
- Other 2.0%