C++17完全指南
本書為《C++17 the complete guide》(第一版) by Nicolai M. Josuttis的個人中文翻譯版, 僅供學習和交流使用,如有侵權請聯繫作者刪除
以下為英文原版購買地址
- 電子版https://leanpub.com/cpp17
- 印刷版https://t.co/aJQbbvmt4Z
以下為中文翻譯版
pdf 版(推薦)
點此下載
注:
- 在github中點擊上方鏈接可能會顯示“something went wrong”,可以下載之後在本地打開。
- 貌似latex默認並不會嵌入用到的字體,如果pdf打開之後某一種字體看起來怪怪的,那大概率是缺少對應的字體,本書用到的字體有宋體、楷體、Times New Roman、Consolas
epub 版
點此下載
注:
- epub版由@wizardforcel提供,感謝貢獻。
markdown 版目錄
- 第一部分基本語言特性
- 第一章結構化綁定
- 第二章帶初始化的if 和switch 語句
- 第三章內聯變量
- 第四章聚合體擴展
- 第五章強制省略拷貝或傳遞未實質化的對象
- 第六章lambda 表達式擴展
- 第七章新屬性和屬性特性
- 第八章其他語言特性
- 第二部分模板特性
- 第九章類模板參數推導
- 第十章編譯期if 語句
- 第十一章折疊表達式
- 第十二章處理字符串字面量模板參數
- 第十三章佔位符類型作為模板參數
- 第十四章擴展的using 聲明
- 第三部分新的標準庫組件
- 第十五章std::optional<>
- 第十六章std::variant<>
- 第十七章std::any
- 第十八章std::byte
- 第十九章字符串視圖
- 第二十章文件系統庫
- 第四部分已有標準庫的擴展和修改
- 第二十一章類型特徵擴展
- 第二十二章並行STL 算法
- 第二十三章新的STL 算法詳解
- 第二十四章子串和子序列搜索器
- 第二十五章其他工具函數和算法
- 第二十六章容器和字符串擴展
- 第二十七章多線程和並發
- 第二十八章標準庫的其他微小特性和修改
- 第五部分專家的工具
- 第二十九章多態內存資源(PMR)
- 第三十章使用new 和delete 管理超對齊數據
- 第三十一章std::to_chars() 和std::from_chars()
- 第三十二章std::launder()
- 第三十三章編寫泛型代碼的改進
- 第六部分一些通用的提示
- 第三十四章總體性的C++17 事項
- 第三十五章廢棄和移除的特性
說明
markdown 版是用程序直接從pdf 版轉換而來,然後再進行校對和修正。
但轉換過程中不僅損失了一些信息,還導致了很多錯誤。
校對時雖然修正了很多錯誤,但因為時間有限,一定還有很多錯誤沒有發現。
因此更加推薦pdf 版
不管是pdf 版還是markdown 版,如果發現錯誤歡迎指出,也可以自行修正之後提交PR。
編譯
- 安裝
tectonic - 確保有所需字體:宋體、楷體(可選)、Times New Roman、Consolas
- 如果
latex/src/main.tex中有includeonly{xxx}這一行且未被註釋掉(%後的內容是註釋),請在編譯之前刪除這一行 - 編譯pdf文件
cd latex/src
tectonic main.tex
- 生成的
main.pdf就是最後的pdf文件
- note: 如果安裝
tectonic之後tectonic不在PATH中,請把第5步中的tectonic替換成完整的路徑 - note: 如果希望進行替換字體或修改行距等操作,可以修改
latex/src/main.tex - note: 如果所有步驟都正確操作仍編譯失敗,歡迎提issue