|
| 1 | +# C++那些事 |
| 2 | + |
| 3 | +### 0.项目概要 |
| 4 | + |
| 5 | +学习C++内容,包括理论、源码、实践、课程代码、项目等 |
| 6 | + |
| 7 | +### 1.基础部分 |
| 8 | + |
| 9 | +- [const那些事](./basic_content/const) |
| 10 | +- [static那些事](./basic_content/static) |
| 11 | +- [this那些事](./basic_content/this) |
| 12 | +- [inline那些事](./basic_content/inline) |
| 13 | +- [sizeof那些事](./basic_content/sizeof) |
| 14 | +- [函数指针那些事](./basic_content/func_pointer) |
| 15 | +- [纯虚函数和抽象类那些事](./basic_content/abstract) |
| 16 | +- [vptr_vtable那些事](./basic_content/vptr_vtable) |
| 17 | +- [virtual那些事](./basic_content/virtual) |
| 18 | +- [volatile那些事](./basic_content/volatile) |
| 19 | +- [assert那些事](./basic_content/assert) |
| 20 | +- [位域那些事](./basic_content/bit) |
| 21 | +- [extern那些事](./basic_content/extern) |
| 22 | +- [struct那些事](./basic_content/struct) |
| 23 | +- [struct与class那些事](./basic_content/struct_class) |
| 24 | +- [union那些事](./basic_content/union) |
| 25 | +- [c实现c++多态那些事](./basic_content/c_poly) |
| 26 | +- [explicit那些事](./basic_content/explicit) |
| 27 | +- [friend那些事](./basic_content/friend) |
| 28 | +- [using那些事](./basic_content/using) |
| 29 | +- [::那些事](./basic_content/::) |
| 30 | +- [enum那些事](./basic_content/enum) |
| 31 | +- [decltype那些事](./basic_content/decltype) |
| 32 | +- [引用与指针那些事](./basic_content/pointer_refer) |
| 33 | +- [宏那些事](./basic_content/macro) |
| 34 | + |
| 35 | +--- |
| 36 | + |
| 37 | + |
| 38 | +### 2.进阶部分 |
| 39 | + |
| 40 | +#### 2.1 [effective_c++](./effective_c++) |
| 41 | + |
| 42 | +正在更新... |
| 43 | + |
| 44 | +#### 2.2 [C++2.0新特性](./c++2.0/) |
| 45 | + |
| 46 | +- [Variadic Templates](./c++2.0/variadic) |
| 47 | +- Spaces in Template Expressions |
| 48 | + |
| 49 | +```cpp |
| 50 | +vector<list<int> > //ok in each C++ version |
| 51 | +vector<list<int>> // before c++ 11 error error: ‘>>’ should be ‘> >’ within a nested template argument list,c++11后可以正常通过 |
| 52 | +``` |
| 53 | + |
| 54 | +- [nullptr and nullptr_t](./c++2.0/nullptr.cpp) |
| 55 | +- [Automatic Type Deduction with auto](./c++2.0/auto.cpp) |
| 56 | +- [Uniform Initialization ](./c++2.0/uniform_initialization.cpp) |
| 57 | +- [initializer_list](./c++2.0/initializer.cpp) |
| 58 | +- [explicit for ctors taking more than one argument](./c++2.0/explicit.cpp) |
| 59 | +- [range-based for statement](./c++2.0/auto.cpp) |
| 60 | + |
| 61 | +```cpp |
| 62 | +for(decl:col) { |
| 63 | + statement |
| 64 | +} |
| 65 | +``` |
| 66 | + |
| 67 | +- [=default,=delete](./c++2.0/default_delete.cpp) |
| 68 | + |
| 69 | + 如果你自行定义了一个ctor,那么编译器就不会给你一个default ctor |
| 70 | + 如果强制加上=default,就可以重新获得并使用default ctor. |
| 71 | + |
| 72 | +- Alias(化名)Template(template typedef) |
| 73 | + |
| 74 | +[alias.cpp](./c++2.0/alias.cpp) |
| 75 | + |
| 76 | +[template_template.cpp](./c++2.0/template_template.cpp) |
| 77 | + |
| 78 | +- [template template parameter](./c++2.0/template_template.cpp) |
| 79 | +- [type alias](./c++2.0/type_alias.cpp) |
| 80 | +- [noexcept](./c++2.0/noexcept.cpp) |
| 81 | +- [override](./c++2.0/override.cpp) |
| 82 | +- [final](./c++2.0/final.cpp) |
| 83 | +- [decltype](./c++2.0/decltype.cpp) |
| 84 | +- [lambda](./c++2.0/lambda.cpp) |
| 85 | +- [Rvalue reference](./c++2.0/rvalue.cpp) |
| 86 | +- [move aware class](./c++2.0/move.cpp) |
| 87 | +- 容器-结构与分类 |
| 88 | + |
| 89 | +(1) 序列式容器包括:array(C++2.0新引入),vector,deque,list,forward_list(C++2.0新引入) |
| 90 | + |
| 91 | +(2) 关联式容器包括:set/multiset,map/multimap |
| 92 | + |
| 93 | +(3) 无序容器(C++2.0新引入,更换原先hash_xxx为unordered_xxx)包括:unordered_map/unordered_multimap,unordered_set/unordered_multiset |
| 94 | + |
| 95 | +- [Hash Function](./c++2.0/hash.cpp) |
| 96 | +- [tuple](./c++2.0/tuple.cpp) |
| 97 | + |
| 98 | +学习资料:https://www.bilibili.com/video/av51863195?from=search&seid=3610634846288253061 |
| 99 | + |
| 100 | +#### 2.3 [C++并发编程v1](./c++2.0/./concurrency_v1) |
| 101 | + |
| 102 | +- [第一章](./c++2.0/./concurrency_v1/chapter1) |
| 103 | +- [第二章](./c++2.0/./concurrency_v1/chapter2) |
| 104 | + |
| 105 | +学习资料:https://chenxiaowei.gitbook.io/cpp_concurrency_in_action/ |
| 106 | + |
| 107 | +#### 2.4 [STL源码剖析](./stl_src) |
| 108 | + |
| 109 | +**stl源码剖析:gcc4.9.1** |
| 110 | + |
| 111 | +- [array](./stl_src/array.md) |
| 112 | +- [deque](./stl_src/deque.md) |
| 113 | +- [queue and stack](./stl_src/queue_stack.md) |
| 114 | +- [list](./stl_src/list.md) |
| 115 | +- [vector](./stl_src/vector.md) |
| 116 | +- [typename](./stl_src/typename.md) |
| 117 | +- [traits](./stl_src/traits.md) |
| 118 | +- [iterator](./stl_src/iterator.md) |
| 119 | +- [谈谈STL设计之EBO优化](./stl_src/谈谈STL设计之EBO优化.md) |
| 120 | +- [rb_tree](./stl_src/rb_tree.md) |
| 121 | +- [set and multiset](set_multiset.md) |
| 122 | +- [map and multimap](./stl_src/map_multimap.md) |
| 123 | +- [hashtable](./stl_src/hashtable.md) |
| 124 | +- [myhashtable](./stl_src/myhashtable.md) |
| 125 | +- [unordered_map](./stl_src/unordered_map.md) |
| 126 | + |
| 127 | +### 3.学习课程 |
| 128 | + |
| 129 | +#### 3.1 [极客时间《现代C++实战30讲》](https://time.geekbang.org/channel/home) |
| 130 | + |
| 131 | +- [堆、栈、RAII:C++里该如何管理资源?](./modern_C++_30) |
| 132 | + - [堆](./modern_++_30/RAII/heap.cpp) |
| 133 | + - [栈](./modern_C++_30/RAII/stack.cpp) |
| 134 | + - [RAII](./modern_C++_30/RAII/RAII.cpp) |
| 135 | + |
| 136 | + |
| 137 | + |
| 138 | +### 4.拓展部分 |
| 139 | + |
| 140 | +#### 4.1 [C++惯用法](./codingStyleIdioms) |
| 141 | + |
| 142 | +##### 你最喜欢的c++编程风格惯用法是什么? |
| 143 | + |
| 144 | +- [1.类初始化列表](./codingStyleIdioms/1_classInitializers) |
| 145 | +- [2.枚举类替换命名空间](./codingStyleIdioms/2_enumclass_namespace) |
| 146 | +- [3.RAII(资源获取即初始化)](./codingStyleIdioms/3_RAII) |
| 147 | +- [4.copy and swap](./codingStyleIdioms/4_copy-swap) |
| 148 | +- [5.pImpl(指针指向具体实现)](./codingStyleIdioms/5_pImpl) |
| 149 | + |
| 150 | +#### 4.2 一些问题 |
| 151 | + |
| 152 | +- [C++中如何将string类型转换为int类型?](./basic_content/extent/string_int.md) |
| 153 | + |
| 154 | +### 5.代码运行 |
| 155 | + |
| 156 | +- **代码环境** |
| 157 | + |
| 158 | +Ubuntu 18.04 |
| 159 | + |
| 160 | +- **工具** |
| 161 | + |
| 162 | +CLion gcc/g++ |
| 163 | + |
| 164 | +### 6.关于作者: |
| 165 | + |
| 166 | +个人公众号: |
| 167 | + |
| 168 | + |
| 169 | + |
0 commit comments