《现代C++教程》[modern-cpp-tutorial]
《现代C++教程》[modern-cpp-tutorial]
資料來源:
中文pdf版链接:https://changkun.de/modern-cpp/pdf/modern-cpp-tutorial-zh-cn.pdf
英文版pdf链接:https://changkun.de/modern-cpp/pdf/modern-cpp-tutorial-en-us.pdf
在线阅读链接:https://github.com/changkun/modern-cpp-tutorial/blob/master/book/en-us/toc.md
书籍代码链接:https://changkun.de/modern-cpp/code/
习题解答链接:https://changkun.de/modern-cpp/exercises/
All_code : https://github.com/changkun/modern-cpp-tutorial
GITHUB: https://github.com/jash-git/modern-cpp-tutorial.git
目錄
序言7
引言 . . . . . . . . . . . . . . . . . . . . . . . . . 7
目標讀者 . . . . . . . . . . . . . . . . . . . . . . 7
本書目的 . . . . . . . . . . . . . . . . . . . . . . 7
相關代碼 . . . . . . . . . . . . . . . . . . . . . . 8
隨書習題 . . . . . . . . . . . . . . . . . . . . . . 8
第1 章邁向現代C++ 8
1.1 被棄用的特性 . . . . . . . . . . . . . . . . . . 8
1.2 與C 的相容性 . . . . . . . . . . . . . . . . . 9
進一步閱讀的參考文獻 . . . . . . . . . . . . . . . 11
第2 章語言可用性的強化12
2.1 常量 . . . . . . . . . . . . . . . . . . . . . . . 12
nullptr . . . . . . . . . . . . . . . . . . . . . 12
constexpr . . . . . . . . . . . . . . . . . . . 13
2.2 變數及其初始化 . . . . . . . . . . . . . . . . 15
if/switch 變數聲明強化 . . . . . . . . . . . . 15
初始化列表 . . . . . . . . . . . . . . . . . . 16
結構化綁定 . . . . . . . . . . . . . . . . . . 18
2.3 類型推導 . . . . . . . . . . . . . . . . . . . . 18
auto . . . . . . . . . . . . . . . . . . . . . . 18
decltype . . . . . . . . . . . . . . . . . . . . 20
尾返回類型推導 . . . . . . . . . . . . . . . . 20
decltype(auto) . . . . . . . . . . . . . . . . 22
2.4 控制流 . . . . . . . . . . . . . . . . . . . . . . 22
if constexpr . . . . . . . . . . . . . . . . . . 22
區間for 反覆運算 . . . . . . . . . . . . . . . . . 23
2.5 範本 . . . . . . . . . . . . . . . . . . . . . . . 24
外部範本 . . . . . . . . . . . . . . . . . . . 24
尖括弧“>” . . . . . . . . . . . . . . . . . . 24
類型別名範本 . . . . . . . . . . . . . . . . . 25
預設範本參數 . . . . . . . . . . . . . . . . . 25
變長參數範本 . . . . . . . . . . . . . . . . . 26
折疊運算式 . . . . . . . . . . . . . . . . . . 28
非類型範本參數推導 . . . . . . . . . . . . . 28
2.6 物件導向 . . . . . . . . . . . . . . . . . . . . 29
委託構造 . . . . . . . . . . . . . . . . . . . 29
繼承構造 . . . . . . . . . . . . . . . . . . . 30
顯式虛函數重載 . . . . . . . . . . . . . . . . 30
顯式禁用預設函數 . . . . . . . . . . . . . . 31
強類型枚舉 . . . . . . . . . . . . . . . . . . 32
總結 . . . . . . . . . . . . . . . . . . . . . . . . . 33
習題 . . . . . . . . . . . . . . . . . . . . . . . . . 33
第3 章語言運行期的強化34
3.1 Lambda 運算式 . . . . . . . . . . . . . . . . . 34
基礎 . . . . . . . . . . . . . . . . . . . . . . 34
泛型Lambda . . . . . . . . . . . . . . . . . 36
3.2 函數物件包裝器 . . . . . . . . . . . . . . . . 36
std::function . . . . . . . . . . . . . . . . 36
std::bind 和std::placeholder . . . . . . 37
3.3 右值引用 . . . . . . . . . . . . . . . . . . . . 38
左值、右值的純右值、將亡值、右值 . . . . 38
右值引用和左值引用 . . . . . . . . . . . . . 39
移動語義 . . . . . . . . . . . . . . . . . . . 41
完美轉發 . . . . . . . . . . . . . . . . . . . 42
總結 . . . . . . . . . . . . . . . . . . . . . . . . . 45
進一步閱讀的參考文獻 . . . . . . . . . . . . . . . 46
第4 章容器46
4.1 線性容器 . . . . . . . . . . . . . . . . . . . . 46
std::array . . . . . . . . . . . . . . . . . . 46
std::forward_list . . . . . . . . . . . . . 48
4.2 無序容器 . . . . . . . . . . . . . . . . . . . . 48
4.3 元組 . . . . . . . . . . . . . . . . . . . . . . . 49
元組基本操作 . . . . . . . . . . . . . . . . . 49
運行期索引 . . . . . . . . . . . . . . . . . . 51
元組合並與遍歷 . . . . . . . . . . . . . . . . 51
總結 . . . . . . . . . . . . . . . . . . . . . . . . . 52
第5 章智慧指標與記憶體管理52
5.1 RAII 與引用計數 . . . . . . . . . . . . . . . . 52
5.2 std::shared_ptr . . . . . . . . . . . . . . . 53
5.3 std::unique_ptr . . . . . . . . . . . . . . . 54
5.4 std::weak_ptr . . . . . . . . . . . . . . . . . 55
總結 . . . . . . . . . . . . . . . . . . . . . . . . . 57
進一步閱讀的參考資料 . . . . . . . . . . . . . . . 57
第6 章規則運算式57
6.1 規則運算式簡介 . . . . . . . . . . . . . . . . 57
普通字元 . . . . . . . . . . . . . . . . . . . 57
特殊字元 . . . . . . . . . . . . . . . . . . . 57
限定詞 . . . . . . . . . . . . . . . . . . . . . 58
6.2 std::regex 及其相關 . . . . . . . . . . . . . . . 58
總結 . . . . . . . . . . . . . . . . . . . . . . . . . 60
習題 . . . . . . . . . . . . . . . . . . . . . . . . . 60
進一步閱讀的參考資料 . . . . . . . . . . . . . . . 62
第7 章並行與併發62
7.1 並行基礎 . . . . . . . . . . . . . . . . . . . . 62
7.2 互斥量與臨界區 . . . . . . . . . . . . . . . . 63
7.3 期物 . . . . . . . . . . . . . . . . . . . . . . . 64
7.4 條件變數 . . . . . . . . . . . . . . . . . . . . 65
7.5 原子操作與記憶體模型 . . . . . . . . . . . . . . 67
原子操作 . . . . . . . . . . . . . . . . . . . 68
一致性模型 . . . . . . . . . . . . . . . . . . 69
記憶體順序 . . . . . . . . . . . . . . . . . . . 72
總結 . . . . . . . . . . . . . . . . . . . . . . . . . 74
習題 . . . . . . . . . . . . . . . . . . . . . . . . . 74
進一步閱讀的參考資料 . . . . . . . . . . . . . . . 74
第8 章檔案系統75
8.1 文檔與連結 . . . . . . . . . . . . . . . . . . . 75
8.2 std::filesystem . . . . . . . . . . . . . . . . . . 75
第9 章其他雜項75
9.1 新類型 . . . . . . . . . . . . . . . . . . . . . . 75
long long int . . . . . . . . . . . . . . . . 75
9.2 noexcept 的修飾和操作 . . . . . . . . . . . . 75
9.3 字面量 . . . . . . . . . . . . . . . . . . . . . . 77
原始字串字面量 . . . . . . . . . . . . . . 77
自訂字面量 . . . . . . . . . . . . . . . . . 77
9.4 記憶體對齊 . . . . . . . . . . . . . . . . . . . . 78
總結 . . . . . . . . . . . . . . . . . . . . . . . . . 79
第10 章展望:C++20 簡介79
概念與約束 . . . . . . . . . . . . . . . . . . . . . 79
模組 . . . . . . . . . . . . . . . . . . . . . . . . . 80
合約 . . . . . . . . . . . . . . . . . . . . . . . . . 80
範圍 . . . . . . . . . . . . . . . . . . . . . . . . . 80
協程 . . . . . . . . . . . . . . . . . . . . . . . . . 80
事務記憶體 . . . . . . . . . . . . . . . . . . . . . . 80
總結 . . . . . . . . . . . . . . . . . . . . . . . . . 80
進一步閱讀的參考資料 . . . . . . . . . . . . . . . 81
附錄1:進一步閱讀的學習材料81
附錄2:現代C++ 的最佳實踐81
常用工具 . . . . . . . . . . . . . . . . . . . . . . 81
代碼風格 . . . . . . . . . . . . . . . . . . . . . . 81
整體性能 . . . . . . . . . . . . . . . . . . . . . . 81
代碼安全 . . . . . . . . . . . . . . . . . . . . . . 82
可維護性 . . . . . . . . . . . . . . . . . . . . . . 82
可攜性 . . . . . . . . . . . . . . . . . . . . . . 82
2 thoughts on “《现代C++教程》[modern-cpp-tutorial]”
82页《现代C++教程》:高速上手C++ 11/14/17/20(附中文PDF下载)[現代C++教程] [電子書 PDF]
C/C++ CPP 電子書