C++20 編程技巧:98個問題解決方案示例, 2/e (C++20 Recipes: A Problem-Solution Approach, 2/e)
內容描述
本書帶你探索 C++20 的主要新特性,包括模塊、概念、飛船運算符和智能指針。
本書是一本方便的專題式代碼參考指南,涵蓋了 C++核心語言標準以及標準模板庫 (STL) 中可用的一些代碼模板。
通過本書,你將學習數字、字符串、日期、時間、類、異常、流、流程和指針等。
此外,你還將看到各種代碼示例、C++ 算法模板、並行處理、多線程和數值處理、 3D 圖形編程代碼等。
同時,本書還提供了大量的STL模板,如函數對像模板、適配器模板、分配器模板和擴展模板。
目錄大綱
譯者序
前言
關於技術審校者
第1章 C++入門1
1.1 尋找文本編輯器2
1.2 在Ubuntu上安裝Clang3
1.3 在Windows上安裝Clang4
1.4 在macOS上安裝Clang5
1.5 構建你的第一個C++程序6
1.6 在Cygwin或Linux中使用GDB調試C++程序8
1.7 在macOS上調試C++程序11
1.8 切換C++編譯模式12
1.9 用Boost庫構建程序13
1.10 安裝Microsoft Visual Studio14
第2章 現代C++16
2.1 初始化變量16
2.2 使用初始化列表初始化對象19
2.3 使用類型推斷21
2.4 在函數中使用auto關鍵字24
2.5 編譯時常量的使用26
2.6 lambda的使用29
2.7 與時間有關的程序37
2.8 理解左值引用和右值引用41
2.9 使用託管指針48
第3章 文本的處理55
3.1 用字面量表示代碼中的字符串55
3.2 面向用戶的本地化文本60
3.3 從文件中讀取字符串66
3.4 從XML文件中讀取數據69
3.5 在字符串中插入運行時數據74
第4章 數字的處理78
4.1 在C++中使用整數類型78
4.2 用關係運算符做決策82
4.3 用邏輯運算符進行鍊式決策86
4.4 使用十六進制值88
4.5 二進制運算符的位運算89
4.6 C++20的宇宙飛船運算符96
第5章 類98
5.1 定義一個類98
5.2 向類中添加數據99
5.3 向類中添加方法101
5.4 使用訪問修飾符103
5.5 初始化類成員變量106
5.6 類的清理110
5.7 類的拷貝113
5.8 使用移動語義優化代碼121
5.9 實現虛函數125
第6章 繼承127
6.1 類的繼承127
6.2 對派生類中的成員變量和方法進行訪問控制129
6.3 隱藏派生類中的方法133
6.4 使用多態基類135
6.5 防止方法重寫138
6.6 創建接口140
6.7 多重繼承142
第7章 標準模板庫的容器145
7.1 存儲固定數量的對象145
7.2 存儲更多的對象147
7.3 存儲一組不斷變化的元素154
7.4 將排序對象存儲在容器中以便快速查找157
7.5 將未排序的元素存儲在容器中以便快速查找165
7.6 使用C++20的“指定初始化”特性168
第8章 標準模板庫的算法170
8.1 在容器中使用迭代器定義序列170
8.2 對容器中的每個元素都調用函數175
8.3 查找容器中的最大值和最小值177
8.4 計算序列中某個值的出現次數181
8.5 查找序列中的值184
8.6 排序序列中的元素185
8.7 查找集合中的值187
第9章 模板189
9.1 創建模板函數189
9.2 模板偏特化192
9.3 創建類模板198
9.4 創建單例200
9.5 在編譯時計算值202
9.6 concept特性205
第10章 內存207
10.1 靜態內存的使用207
10.2 棧內存的使用209
10.3 堆內存的使用213
10.4 自動共享內存的使用215
10.5 創建單實例動態對象218
10.6 創建智能指針222
10.7 通過重載new和delete調試內存問題229
10.8 確定代碼更改對性能的影響235
10.9 了解內存選擇對性能的影響237
10.10 減少內存碎片問題240
第11章 並發252
11.1 使用線程執行並發任務252
11.2 創建線程作用域變量257
11.3 使用互斥的方式訪問共享對象268
11.4 創建等待事件的線程277
11.5 從線程中檢索結果282
11.6 在線程之間同步隊列消息286
第12章 網絡298
12.1 在macOS上設置Berkeley Sockets應用程序298
12.2 在Ubuntu的Eclipse中設置Berkeley Sockets應用程序301
12.3 在Windows的Visual Studio中設置Winsock 2應用程序305
12.4 在兩個程序之間創建一個Socket連接309
12.5 在兩個程序之間創建網絡協議330
第13章 腳本346
13.1 在Visual Studio C++中運行Lua命令346
13.2 在Eclipse中創建一個Lua項目350
13.3 在Xcode中創建一個Lua項目352
13.4 使用Lua編程語言353
13.5 從C++中調用Lua函數362
13.6 從Lua中調用C函數371
13.7 創建異步Lua函數377
第14章 3D圖形編程383
14.1 GLFW簡介383
14.2 渲染三角形386
14.3 創建紋理四邊形396
14.4 從文件中加載幾何體416
作者介紹
J. Burton Browning
1999年在北卡羅來納州立大學獲得博士學位,研究領域涵蓋遠程學習、編程和教育技術等。
他愛好廣泛,喜歡編程、攝影、機器人技術、汽車修復、木工、狩獵、閱讀、釣魚和射箭等。
他的出版作品涉及跨職能學習團隊(CFLT)、烏托邦學校(教師主導的學校模式)、計算機編程(多種語言)、
開源軟件、醫療統計和數據挖掘、數控等離子切割機操作、教育技術、傳記、移動學習、在線教學等主題。
Bruce Sutherland
一名來自蘇格蘭鄧迪的電子遊戲程序員。
2005年,他畢業於阿伯泰大學,獲得計算機遊戲技術學士(榮譽)學位。
畢業後,他就職於4J Studios,參與了《星際迷航:遭遇戰》(PS2)、《上古捲軸4:湮沒》(PS3)、
《星際迷航:帝國霸業》(PS2、Wii)、《杜卡迪摩托》(NDS)和《AMF保齡球:非同尋常》(nds)等項目。
2008年7月,他從鄧迪搬到了澳大利亞墨爾本,在那裡他加入了Visceral Studios,擔任《死亡空間》
(Xbox 360、PS3、PC)、《教父2》(Xbox360、PS3、PC)和《死亡空間3》(Xbox360、PS3、PC)的軟件工程師。
他對安卓系統的開發也很感興趣,還在自己的博客上撰寫教程。