定 價(jià):109 元
叢書(shū)名:計(jì)算機(jī)前沿技術(shù)叢書(shū)
- 作者:羅能
- 出版時(shí)間:2022/7/1
- ISBN:9787111708223
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP312.8
- 頁(yè)碼:298
- 紙張:
- 版次:
- 開(kāi)本:16
C++20高級(jí)編程主要講解C++庫(kù)、框架開(kāi)發(fā)中的高級(jí)編程技術(shù),以及*新的C++20標(biāo)準(zhǔn)特性。全書(shū)共10章,分別為:類型與對(duì)象、編譯時(shí)多態(tài)、概念約束、元編程介紹、模板元編程、constexpr元編程、Ranges標(biāo)準(zhǔn)庫(kù)、協(xié)程、模塊、綜合運(yùn)用。其中C++20的四大特性獨(dú)立成章,一些小的特性則貫穿于全書(shū),其他章節(jié)則探討了面向?qū)ο、元編程、函?shù)式編程、并發(fā)編程等話題。
C++20高級(jí)編程針對(duì)以上新特性準(zhǔn)備了豐富的代碼樣例,并隨書(shū)附贈(zèng)全部案例源碼。相信通過(guò)這些代碼,讀者很容易掌握這些新特性。作為一本講解C++高級(jí)編程的書(shū),本書(shū)還探討了很多元編程話題,這是作為庫(kù)開(kāi)發(fā)必不可少的技能,它們也將隨著C++的演進(jìn)而不斷演進(jìn),大大提升庫(kù)開(kāi)發(fā)者的編程體驗(yàn),尤其是近年來(lái)C++的標(biāo)準(zhǔn)提案經(jīng)歷了從模板元編程向constexpr元編程轉(zhuǎn)換的過(guò)程。
C++20高級(jí)編程適合中高級(jí)C++程序員、架構(gòu)師、框架開(kāi)發(fā)者閱讀,閱讀前*好能夠掌握一些現(xiàn)代C++的知識(shí)。對(duì)于想要系統(tǒng)性學(xué)習(xí)C++20并進(jìn)階C++技能的讀者,一定不要錯(cuò)過(guò)本書(shū)。
序
前言
第1章 類型與對(duì)象/
1.1類型的作用/
1.2現(xiàn)代C++中對(duì)類型處理能力的演進(jìn)/
1.3值類別(value category)/
1.3.1理解左值與右值/
1.3.2函數(shù)形參何時(shí)使用何種引用/
1.3.3轉(zhuǎn)發(fā)引用與完美轉(zhuǎn)發(fā)/
1.4類型推導(dǎo)/
1.4.1auto類型推導(dǎo)/
1.4.2decltype類型推導(dǎo)/
1.4.3decltype(auto)類型推導(dǎo)/
1.4.4std::declval元函數(shù)/
1.4.5類模板參數(shù)推導(dǎo)(CTAD)/
1.5函數(shù)對(duì)象/
1.5.1定義函數(shù)對(duì)象/
1.5.2lambda表達(dá)式/
1.5.3函數(shù)適配器/
1.6運(yùn)行時(shí)多態(tài)/
1.6.1運(yùn)行時(shí)多態(tài)手段/
1.6.2subtype多態(tài)vsadhoc多態(tài)/
1.7調(diào)試手段/
1.7.1編譯時(shí)打印方案/
1.7.2運(yùn)行時(shí)打印方案/
1.7.3使用外部工具/
第2章 編譯時(shí)多態(tài)/
2.1函數(shù)重載機(jī)制/
2.1.1名稱查找/
2.1.2模板函數(shù)處理/
2.1.3重載決議/
2.1.4注意事項(xiàng)/
2.1.5再談SFINAE/
2.2類型特征(Type traits)/
2.2.1Type traits謂詞與變量模板/
2.2.2類型變換/
2.2.3輔助類/
2.2.4空基類優(yōu)化/
2.2.5實(shí)現(xiàn)Type traits/
2.2.6類型內(nèi)省/
2.2.7enable_if元函數(shù)/
2.2.8標(biāo)簽分發(fā)/
2.2.9if constexpr/
2.2.10void_t元函數(shù)/
2.3奇異遞歸模板/
2.3.1代碼復(fù)用/
2.3.2靜態(tài)多態(tài)/
2.3.3enable_shared_from_this模板類/
2.4表達(dá)式模板/
2.4.1標(biāo)量延遲計(jì)算/
2.4.2向量延遲計(jì)算/
2.4.3提高表達(dá)力/
2.5注意事項(xiàng)/
第3章 概念約束/
3.1定義概念/
3.2requires表達(dá)式/
3.2.1簡(jiǎn)單要求/
3.2.2類型要求/
3.2.3復(fù)合要求/
3.2.4嵌套要求/
3.2.5注意事項(xiàng)/
3.3requires子句/
3.4約束的偏序規(guī)則/
3.4.1約束表達(dá)式歸一化/
3.4.2簡(jiǎn)單約束的包含關(guān)系/
3.4.3一般約束的包含關(guān)系/
3.4.4using類型別名與concept表達(dá)式別名/
3.5概念標(biāo)準(zhǔn)庫(kù)/
3.5.1same_as(與某類相同)/
3.5.2derived_from(派生自某類)/
3.5.3convertible_to(可轉(zhuǎn)換為某類)/
3.5.4算術(shù)概念/
3.5.5值概念/
3.5.6invocable(可調(diào)用的)/
3.6綜合運(yùn)用之?dāng)U展transform變換算法/
3.7注意事項(xiàng)/
第4章 元編程介紹/
4.1元編程歷史/
4.2模板歷史/
4.3constexpr歷史/
4.4元編程能力與應(yīng)用/
4.4.1零成本抽象/
4.4.2值計(jì)算/
4.4.3類型計(jì)算/
4.4.4編譯時(shí)多態(tài)/
4.4.5類型安全/
4.4.6泛型編程/
4.4.7靜態(tài)反射/
4.4.8內(nèi)部領(lǐng)域特定語(yǔ)言EDSL/
第5章 模板元編程/
5.1模板vs宏/
5.1.1泛型函數(shù)/
5.1.2泛型容器/
5.2模板類元函數(shù)/
5.2.1數(shù)值計(jì)算/
5.2.2類型計(jì)算/
5.3TypeList/
5.3.1基本方法/
5.3.2高階函數(shù)/
5.3.3常用算法/
5.4綜合運(yùn)用/
5.4.1全局最短路徑/
5.4.2KV數(shù)據(jù)表/
5.4.3注意事項(xiàng)/
第6章 constexpr元編程/
6.1constexpr變量/
6.2constinit初始化/
6.3折疊表達(dá)式/
6.4constexpr函數(shù)/
6.4.1consteval/
6.4.2編譯時(shí)內(nèi)存分配/
6.4.3編譯時(shí)虛函數(shù)/
6.4.4is_constant_evaluated/
6.4.5停機(jī)問(wèn)題/
6.4.6檢測(cè)未定義行為/
6.5非類型模板參數(shù)/
6.6constexpr與TypeList/
6.6.1類型、值的包裹類/
6.6.2高階函數(shù)/
6.6.3管道操作符/
6.6.4重構(gòu)KV數(shù)據(jù)表/
6.7綜合運(yùn)用之編譯時(shí)字符串操作/
第7章 Ranges標(biāo)準(zhǔn)庫(kù)/
7.1range訪問(wèn)操作/
7.1.1ranges::begin/
7.1.2ranges::end/
7.1.3ranges::size/
7.1.4ranges::empty/
7.1.5ranges::data/
7.2range相關(guān)概念/
7.2.1range/
7.2.2borrowed_range/
7.2.3sized_range/
7.2.4view/
7.2.5其他概念/
7.3range實(shí)用組件/
7.3.1view_interface/
7.3.2subrange/
7.3.3ref_view/
7.4range工廠/
7.4.1empty_view/
7.4.2single_view/
7.4.3iota_view/
7.4.4istream_view/
7.5range適配器/
7.5.1適配器對(duì)象/
7.5.2all/
7.5.3filter/
7.5.4transform/
7.5.5take/
7.5.6take_while/
7.5.7drop/
7.5.8drop_while/
7.5.9join/
7.5.10split/
7.5.11common/
7.5.12reverse/
7.5.13elements/
7.6其他改善/
7.6.1迭代器概念/
7.6.2算法接口改善/
7.7綜合運(yùn)用/
7.7.1矩陣乘法/
7.7.2日歷程序/
7.7.3注意事項(xiàng)/
第8章 協(xié)程/
8.1協(xié)程的起源/
8.2協(xié)程初探/
8.3函數(shù)與協(xié)程理論/
8.4揭秘co_await表達(dá)式/
8.4.1表達(dá)式轉(zhuǎn)換過(guò)程/
8.4.2Awaiter對(duì)象/
8.4.3標(biāo)準(zhǔn)庫(kù)中的Awaiter/
8.5揭秘Promise概念/
8.5.1協(xié)程句柄/
8.5.2Promise概念/
8.6綜合運(yùn)用/
8.6.1生成器/
8.6.2為已有類型非侵入式擴(kuò)展協(xié)程接口/
8.6.3利用協(xié)程機(jī)制簡(jiǎn)化錯(cuò)誤處理/
8.6.4注意事項(xiàng)/
第9章 模塊/
9.1Hello World模塊/
9.2定義一個(gè)模塊/
9.3模塊分區(qū)/
9.4私有片段/
9.5模塊樣板文件/
9.6注意事項(xiàng)/
第10章 綜合運(yùn)用/
10.1配置文件反序列化框架/
10.1.1背景介紹/
10.1.2標(biāo)準(zhǔn)的缺失,靜態(tài)反射機(jī)制/
10.1.3元數(shù)據(jù)設(shè)計(jì)/
10.1.4REPEAT宏/
10.1.5結(jié)構(gòu)體遍歷/
10.1.6編譯時(shí)多態(tài)/
10.1.7反序列化數(shù)據(jù)類型/
10.2AsyncIO協(xié)程庫(kù)/
10.2.1背景介紹/
10.2.2性能測(cè)試/
10.2.3事件驅(qū)動(dòng)模型/
10.2.4Handle類設(shè)計(jì)/
10.2.5調(diào)度器設(shè)計(jì)/
10.2.6Task協(xié)程設(shè)計(jì)/
10.2.7實(shí)現(xiàn)一些協(xié)程/
10.2.8注意事項(xiàng)/
附錄/
附錄A概念約束歷史/
參考文獻(xiàn)/