C++20編程技巧:98個問題解決方案示例(原書第2版)
定 價:¥129
中 教 價:¥96.75 (7.50折)
庫 存 數: 0
叢 書 名:華章程序員書庫
本書帶你探索 C 20 的主要新特性,包括模塊、概念、飛船運算符和智能指針。本書是一本方便的專題式代碼參考指南,涵蓋了 C 核心語言標準以及標準模板庫 (STL) 中可用的一些代碼模板。通過本書,你將學習數字、字符串、日期、時間、類、異常、流、流程和指針等。 此外,你還將看到各種代碼示例、C 算法模板、并行處理、多線程和數值處理、 3D 圖形編程代碼等。同時,本書還提供了大量的STL模板,如函數對象模板、適配器模板、分配器模板和擴展模板。
本書探索C 20的主要新特性(包括module、concept、宇宙飛船運算符和智能指針),涵蓋了C 核心語言標準以及標準模板庫(STL)中一些可用的代碼模板,是一本方便的專題式代碼參考指南。
通過本書,你將學習數字、字符串、日期、時間、類、異常、流和指針等的使用技巧,還將學習各種代碼示例、C 算法模板、并行處理、多線程、數值處理和3D圖形編程等。同時,本書提供了大量的STL模板,如函數對象模板、適配器模板、分配器模板和擴展模板。
通過閱讀本書,你將學習:C 20中的新功能。如何編寫模塊。如何處理文本、數字和類。如何使用標準庫中可用的容器和算法。如何使用模板、內存、并發、網絡、腳本等。如何進行3D圖形編程。
C 編程語言正在不斷地發展和完善。C 始終保持生命力的原因是,它仍然在高性能、可移植的應用程序中扮演著重要的角色。很少有語言像C 一樣,可以在如此多的平臺上使用,而不依賴運行時環境。這是因為C 是編譯型編程語言,C 程序通過編譯和鏈接構建到應用程序二進制文件中。編譯器的選擇在當今C 領域尤為重要,這要歸因于語言變化的速度。Bjarne Stroustrup于1979年開始開發C 編程語言,當時C 被稱為帶類的C語言。直到1998年,C 語言才開始正式標準化。2003年發布了更新的標準,此后又經過8年,直到2011年C 11發布,該標準再次進行了更新。此版本進行了大量更新,被稱為現代C ,以區別于老式C 。C 17和C 20摒棄了過時的特性,為語言帶來了許多重大的變化。本書介紹使用Clang編譯器、Microsoft Visual Studio(VS)2019和Xcode為C 14到C 20 ISO標準編寫的代碼。Clang是一個開源編譯器,初是蘋果公司的閉源項目。蘋果公司于2007年向開源社區發布了該代碼,此后,Clang一直在擴大其優勢。本書介紹了如何在運行OS X、Windows或Linux(Ubuntu)的計算機上安裝和使用Clang。各章的示例已使用Clang 3.5或Visual Studio 2019進行了編譯和測試。本書列出的所有應用程序都是免費的,你可以根據需求來使用它們。
J. 伯頓 布朗寧(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)的軟件工程師。他對安卓系統的開發也很感興趣,還在自己的博客上撰寫教程。
譯者序前言關于技術審校者第1章 C 入門11.1 尋找文本編輯器21.2 在Ubuntu上安裝Clang31.3 在Windows上安裝Clang41.4 在macOS上安裝Clang51.5 構建你的個C 程序61.6 在Cygwin或Linux中使用GDB調試C 程序81.7 在macOS上調試C 程序111.8 切換C 編譯模式121.9 用Boost庫構建程序131.10 安裝Microsoft Visual Studio14第2章 現代C 162.1 初始化變量162.2 使用初始化列表初始化對象192.3 使用類型推斷212.4 在函數中使用auto關鍵字242.5 編譯時常量的使用262.6 lambda的使用292.7 與時間有關的程序372.8 理解左值引用和右值引用412.9 使用托管指針48第3章 文本的處理553.1 用字面量表示代碼中的字符串553.2 面向用戶的本地化文本603.3 從文件中讀取字符串663.4 從XML文件中讀取數據693.5 在字符串中插入運行時數據74第4章 數字的處理784.1 在C 中使用整數類型784.2 用關系運算符做決策824.3 用邏輯運算符進行鏈式決策864.4 使用十六進制值884.5 二進制運算符的位運算894.6 C 20的宇宙飛船運算符96第5章 類985.1 定義一個類985.2 向類中添加數據995.3 向類中添加方法1015.4 使用訪問修飾符1035.5 初始化類成員變量1065.6 類的清理1105.7 類的拷貝1135.8 使用移動語義優化代碼1215.9 實現虛函數125第6章 繼承1276.1 類的繼承1276.2 對派生類中的成員變量和方法進行訪問控制1296.3 隱藏派生類中的方法1336.4 使用多態基類1356.5 防止方法重寫1386.6 創建接口1406.7 多重繼承142第7章 標準模板庫的容器1457.1 存儲固定數量的對象1457.2 存儲更多的對象1477.3 存儲一組不斷變化的元素1547.4 將排序對象存儲在容器中以便快速查找1577.5 將未排序的元素存儲在容器中以便快速查找1657.6 使用C 20的指定初始化特性168第8章 標準模板庫的算法1708.1 在容器中使用迭代器定義序列1708.2 對容器中的每個元素都調用函數1758.3 查找容器中的值和小值1778.4 計算序列中某個值的出現次數1818.5 查找序列中的值1848.6 排序序列中的元素1858.7 查找集合中的值187第9章 模板1899.1 創建模板函數1899.2 模板偏特化1929.3 創建類模板1989.4 創建單例2009.5 在編譯時計算值2029.6 concept特性205第10章 內存20710.1 靜態內存的使用20710.2 棧內存的使用20910.3 堆內存的使用21310.4 自動共享內存的使用21510.5 創建單實例動態對象21810.6 創建智能指針22210.7 通過重載new和delete調試內存問題22910.8 確定代碼更改對性能的影響23510.9 了解內存選擇對性能的影響23710.10 減少內存碎片問題240第11章 并發25211.1 使用線程執行并發任務25211.2 創建線程作用域變量25711.3 使用互斥的方式訪問共享對象26811.4 創建等待事件的線程27711.5 從線程中檢索結果28211.6 在線程之間同步隊列消息286第12章 網絡29812.1 在macOS上設置Berkeley Sockets應用程序29812.2 在Ubuntu的Eclipse中設置Berkeley Sockets應用程序30112.3 在Windows的Visual Studio中設置Winsock 2應用程序30512.4 在兩個程序之間創建一個Socket連接30912.5 在兩個程序之間創建網絡協議330第13章 腳本34613.1 在Visual Studio C 中運行Lua命令34613.2 在Eclipse中創建一個Lua項目35013.3 在Xcode中創建一個Lua項目35213.4 使用Lua編程語言35313.5 從C 中調用Lua函數36213.6 從Lua中調用C函數37113.7 創建異步Lua函數377第14章 3D圖形編程38314.1 GLFW簡介38314.2 渲染三角形38614.3 創建紋理四邊形39614.4 從文件中加載幾何體41614.5 使用C 20的module特性433