感谢各位对《C++ 那些事》的支持,现将内容也同步至网站,可以打开网站直接阅读~欢迎大家 star、转发、PR。
- 中文名:C++ 那些事
- 英文名:Stories About C Plus Plus
这是一个适合初学者从入门到进阶的仓库,解决了面试者与学习者想要深入 C++及如何入坑 C++的问题。除此之外,本仓库拓展了更加深入的源码分析,多线程并发等的知识,是一个比较全面的 C++ 学习从入门到进阶提升的仓库。
- const 那些事
- static 那些事
- this 那些事
- inline 那些事
- sizeof 那些事
- 函数指针那些事
- 纯虚函数和抽象类那些事
- vptr_vtable 那些事
- virtual 那些事
- volatile 那些事
- assert 那些事
- 位域那些事
- extern 那些事
- struct 那些事
- struct 与 class 那些事
- union 那些事
- c 实现 c++ 多态那些事
- explicit 那些事
- friend 那些事
- using 那些事
- :: 那些事
- enum 那些事
- decltype 那些事
- 引用与指针那些事
- 宏那些事
C++2.0 是一个简称,意为「现代 C++」,包括 C++11/14/17/20。
2.1 C++11 新特性
-
Spaces in Template Expressions
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后可以正常通过
-
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
待更新...
4. 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
4. 并发编程
学习资料:https://chenxiaowei.gitbook.io/cpp_concurrency_in_action/
学习自:
https://www.youtube.com/watch?v=eZ8yKZo-PGw&list=PLk6CEY9XxSIAeK-EAh3hB4fgNvYkYmghp&index=4
5. C++ 惯用法
- 堆、栈、RAII:C++ 里该如何管理资源?
- 自己动手,实现 C++ 的智能指针
- 右值和移动究竟解决了什么问题?
- 容器 1
- 容器 2
- 异常
- 字面量、静态断言和成员函数说明符
- 是不是应该返回对象?
- 编译期多态:泛型编程和模板入门
- 译期能做些什么?一个完整的计算世界
- SFINAE:不是错误的替换失败是怎么回事?
- constexpr:一个常态的世界
- 函数对象和 lambda:进入函数式编程
- 内存模型和 atomic:理解并发的复杂性
7.1 容器快捷输出工具
对吴老师的代码进行了修改,点击此处直通代码
输入:
map<int, int> mp{
{1, 1},
{2, 4},
{3, 9}};
cout << mp << endl;
输出结果显示:
{ 1 => 1, 2 => 4, 3 => 9 }
-
代码环境
Ubuntu 18.04
-
工具
CLion gcc/g++
个人公众号: