注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計C/C++及其相關(guān)深入實踐C++模板編程

深入實踐C++模板編程

深入實踐C++模板編程

定 價:¥69.00

作 者: 溫宇杰
出版社: 機(jī)械工業(yè)出版社
叢編項:
標(biāo) 簽: C C++ C# VC VC++ 程序設(shè)計 計算機(jī)/網(wǎng)絡(luò)

ISBN: 9787111427544 出版時間: 2013-06-01 包裝: 平裝
開本: 16 頁數(shù): 316 字?jǐn)?shù):  

內(nèi)容簡介

  《實戰(zhàn)系列:深入實踐C++模板編程》以透徹分析原理為前提,深入講解了模板編程的基本原理、標(biāo)準(zhǔn)庫中算法與容器等模板的實現(xiàn)原理;以實踐為導(dǎo)向,通過大量的模板向讀者展示了如何使用模板進(jìn)行編程以及如何編寫自定義模板。除此之外,《實戰(zhàn)系列:深入實踐C++模板編程》還總結(jié)了各種常用的模板編程技巧、C++11標(biāo)準(zhǔn)中的模板新特性和新語法,以及C++11中新增的其他語言特性。全書共16章,分為四部分:第一部分(第1~4章)首先介紹了模板編程的基本概念與用法,然后重點討論了編譯器對模板的具體實現(xiàn)方法及其局限,讀者可以通過本部分內(nèi)容理解模板的基本原理并自行實現(xiàn)簡單的類模板與函數(shù)模板。第二部分(第5~9章)對標(biāo)準(zhǔn)庫中的算法與容器的實現(xiàn)原理和用法進(jìn)行了深入地剖析,讀者通過本部分內(nèi)容對標(biāo)準(zhǔn)庫中的算法、迭代器與容器之間的關(guān)系有深入的理解,從而可以精確調(diào)節(jié)標(biāo)準(zhǔn)容器的行為,自行開發(fā)適用于標(biāo)準(zhǔn)算法的容器類模板。第三部分(第10~13章)討論了模板編程的高級技巧,如模板編程中“概念”的設(shè)計、控制代碼量的技術(shù)、編譯期邏輯的控制以及元編程的基本方法等,讀者可以通過本部分內(nèi)容開發(fā)更具規(guī)模、更加智能的模板庫,并利用元編程技術(shù)實現(xiàn)編譯期的邏輯演繹與類型推導(dǎo)。第四部分(第14~16章)介紹了C++11標(biāo)準(zhǔn)中的新增語言特性,以及對模板編程的影響。

作者簡介

  溫宇杰 資深C++軟件工程師,有多年C++開發(fā)經(jīng)驗,對C++模板編程和元編程有非常深入的研究,實踐經(jīng)驗十分豐富。擅長組合優(yōu)化算法及大規(guī)模集成電路輔助設(shè)計算法,對FPGA體系結(jié)構(gòu)以及Verilog和VHDL等硬件描述語言也有非常深入的研究,曾主持并參與開發(fā)了一套完整設(shè)計流程的FPGA平臺編譯軟件。

圖書目錄

目  錄
前言
第一部分 模板基礎(chǔ)
第1章 Hello模板 / 2
1.1 為什么需要模板 / 2
1.2 初識函數(shù)模板 / 3
1.2.1 函數(shù)模板的實現(xiàn) / 3
1.2.2 如何使用函數(shù)模板 / 4
1.2.3 模板參數(shù)自動推導(dǎo) / 5
1.2.4 模板參數(shù)默認(rèn)值 / 7
1.2.5 模板函數(shù)的靜態(tài)變量 / 8
1.3 如何處理函數(shù)模板中的函數(shù)體 / 8
1.3.1 HPP文件還是CPP文件 / 9
1.3.2 鏈接器如何識別重復(fù)模板實例 / 10
1.4 尷尬的Export Template / 13
1.4.1 什么是外名模板 / 13
1.4.2 C++編譯器對外名模板的處理 / 14
1.5 本章小結(jié) / 15
第2章 類亦模板 / 16
2.1 類型無關(guān)的數(shù)據(jù)結(jié)構(gòu) / 16
2.2 實踐——棧類模板 / 17
2.2.1 棧類模板實例 / 17
2.2.2 棧類模板衍生子類模板實例 / 20
2.3 突破——異質(zhì)鏈表 / 21
2.4 構(gòu)造元組 / 23
2.4.1 通過嵌套實現(xiàn)元組 / 23
2.4.2 用類實現(xiàn)元組 / 24
2.5 類模板的用法 / 25
2.5.1 成員函數(shù)模板 / 25
2.5.2 友元函數(shù)模板 / 26
2.6 類模板的靜態(tài)成員 / 27
2.7 本章小結(jié) / 30
第3章 模板參數(shù)類型詳解 / 31
3.1 整數(shù)模板參數(shù) / 31
3.2 函數(shù)指針模板參數(shù) / 32
3.3 指針及引用模板參數(shù) / 34
3.4 成員函數(shù)指針模板參數(shù) / 35
3.5 模板型模板參數(shù) / 37
3.6 本章小結(jié) / 39
第4章 凡事總有“特例” / 40
4.1 從vector<bool>說起 / 40
4.2 特例的多種寫法 / 44
4.3 特例匹配規(guī)則 / 46
4.4 函數(shù)模板的特例與重載 / 47
4.4.1 分辨重載 / 50
4.4.2 編譯期的條件判斷邏輯 / 52
4.5 本章小結(jié) / 54
第二部分 標(biāo)準(zhǔn)庫中的模板
第5章 容器、迭代器與算法 / 56
5.1 容器的定義 / 56
5.2 容器的實現(xiàn) / 56
5.2.1 Java的實現(xiàn)方法 / 57
5.2.2 C++的實現(xiàn)方法 / 60
5.3 容器與迭代器 / 62
5.3.1 鏈表容器與迭代器 / 64
5.3.2 集合容器與迭代器 / 67
5.4 迭代器與算法 / 71
5.4.1 求容器中元素之和 / 71
5.4.2 實例:微型算法庫 / 73
5.5 容器與迭代器的分類 / 75
5.6 容器與算法的關(guān)系 / 76
5.7 迭代器的陷阱 / 76
5.8 本章小結(jié) / 77
第6章 標(biāo)準(zhǔn)庫中的容器 / 79
6.1 容器的分類及基本要求 / 79
6.2 序列型容器 / 81
6.2.1 變長數(shù)組vector / 82
6.2.2 雙向鏈表list / 84
6.2.3 雙端序列deque / 85
6.3 容器轉(zhuǎn)換器 / 87
6.3.1 棧stack與隊列queue / 87
6.3.2 優(yōu)先隊列priority_queue / 88
6.4 關(guān)聯(lián)型容器 / 89
6.4.1 基本數(shù)據(jù)結(jié)構(gòu) / 89
6.4.2 內(nèi)嵌類型定義 / 92
6.4.3 構(gòu)造關(guān)聯(lián)型容器 / 92
6.4.4 插入數(shù)據(jù) / 93
6.4.5 數(shù)據(jù)的刪除、查找與訪問 / 96
6.4.6 整數(shù)值專用集合bitset / 98
6.5 散列表容器 / 99
6.5.1 基本數(shù)據(jù)結(jié)構(gòu) / 99
6.5.2 散列函數(shù) / 100
6.5.3 桶 / 101
6.6 其他C++11新容器 / 104
6.6.1 定長數(shù)組array / 104
6.6.2 單向鏈表forward_list / 105
6.7 本章小結(jié) / 106
第7章 隱形的助手——分配器 / 107
7.1 分配器的基本要求 / 107
7.2 交換容器內(nèi)容時的特殊處理 / 110
7.3 有態(tài)分配器與無態(tài)分配器 / 112
7.4 實踐:池分配器 / 114
7.4.1 池分配器模板類的設(shè)計 / 115
7.4.2 對象池的實現(xiàn) / 116
7.4.3 定位構(gòu)造 / 121
7.4.4 池分配器的實現(xiàn) / 122
7.4.5 測試池分配器 / 127
7.4.6 實際運行 / 129
7.5 本章小結(jié) / 131
第8章 標(biāo)準(zhǔn)庫中的迭代器 / 132
8.1 迭代器分類 / 132
8.1.1 輸入迭代器 / 132
8.1.2 前向迭代器 / 133
8.1.3 雙向迭代器與跳轉(zhuǎn)迭代器 / 135
8.1.4 輸出迭代器 / 136
8.2 迭代器屬性類模板 / 137
8.3 迭代器轉(zhuǎn)換器 / 139
8.3.1 反轉(zhuǎn)迭代器 / 139
8.3.2 插入迭代器 / 141
8.4 流迭代器 / 142
8.5 本章小結(jié) / 144
第9章 標(biāo)準(zhǔn)庫中的算法 / 145
9.1 算法的共同特征 / 145
9.2 標(biāo)準(zhǔn)庫中的常用算法 / 145
9.2.1 foreach的三種寫法 / 146
9.2.2 搜索 / 147
9.2.3 計數(shù)與比較 / 149
9.2.4 復(fù)制、交換、替換與刪除 / 149
9.2.5 排序 / 151
9.2.6 二分搜索 / 151
9.2.7 集合運算 / 152
9.2.8 二叉堆操作 / 154
9.2.9 其他算法 / 154
9.3 預(yù)設(shè)函數(shù)對象 / 155
9.3.1 函數(shù)對象基類 / 155
9.3.2 運算函數(shù)對象 / 156
9.3.3 參數(shù)綁定 / 157
9.4 實踐:矩陣操作中如何消除循環(huán)語句 / 165
9.4.1 跨躍迭代器 / 165
9.4.2 矩陣類模板 / 167
9.4.3 累計迭代器 / 169
9.4.4 矩陣乘法 / 170
9.4.5 矩陣LU分解 / 171
9.4.6 組合迭代器 / 172
9.4.7 沒有循環(huán)語句的矩陣乘法 / 177
9.5 本章小結(jié) / 178
第三部分 模板編程高級技巧
第10章 專用名詞——概念 / 180
10.1 模板的先天不足 / 180
10.2 “概念”的提案及ConceptGCC編譯器 / 181
10.3 概念語法 / 183
10.3.1 定義概念 / 183
10.3.2 用概念約束模板參數(shù) / 184
10.3.3 概念映射 / 184
10.4 概念模擬庫 / 186
10.4.1 概念檢查宏 / 187
10.4.2 自定義概念檢查 / 189
10.4.3 概念典型 / 190
10.5 本章小結(jié) / 191
第11章 代碼膨脹 / 192
11.1 源代碼的增加 / 192
11.1.1 代理類的困境 / 192
11.1.2 D語言的方法 / 195
11.2 目標(biāo)代碼的增加 / 196
11.2.1 目標(biāo)代碼膨脹的成因 / 196
11.2.2 目標(biāo)代碼膨脹實例 / 197
11.2.3 改進(jìn)代碼 / 198
11.2.4 測試改進(jìn)效果 / 206
11.3 本章小結(jié) / 208
第12章 常用模板編程技巧 / 209
12.1 標(biāo)簽與特性 / 209
12.1.1 特性類模板numeric_limits / 209
12.1.2 實例:矩陣與向量乘法 / 211
12.2 編譯期多態(tài) / 213
12.2.1 全覆蓋的函數(shù)模板 / 213
12.2.2 虛函數(shù)的啟發(fā) / 213
12.2.3 虛基類模板 / 214
12.3 策略 / 217
12.3.1 策略的產(chǎn)生:再說vector的不足 / 217
12.3.2 為vector添加存儲策略 / 218
12.4 偽變長參數(shù)模板 / 223
12.4.1 hetero_node的啟發(fā) / 224
12.4.2 編譯期遞歸 / 225
12.4.3 訪問元組中的數(shù)據(jù) / 227
12.5 本章小結(jié) / 230
第13章 元編程 / 231
13.1 C++中的元編程 / 231
13.2 元函數(shù) / 231
13.2.1 元函數(shù)的實現(xiàn) / 231
13.2.2 元函數(shù)的調(diào)用 / 233
13.3 元容器與元算法 / 235
13.3.1 元容器的實現(xiàn) / 235
13.3.2 實例:容納5種類型的元容器 / 236
13.4 類型過濾 / 240
13.4.1 類型過濾元函數(shù)的實現(xiàn) / 240
13.4.2 實例:應(yīng)用元容器與元算法 / 242
13.5 本章小結(jié) / 244
第四部分 模板與C++11
第14章 右值引用 / 246
14.1 右值引用的產(chǎn)生 / 246
14.1.1 函數(shù)的匿名返回值 / 246
14.1.2 返回值優(yōu)化 / 249
14.2 右值引用基本概念 / 251
14.2.1 左值與非左值 / 251
14.2.2 右值與右值引用 / 252
14.2.3 移動構(gòu)造與移動賦值 / 252
14.2.4 狹義與廣義的右值 / 253
14.2.5 左值強(qiáng)制轉(zhuǎn)義成右值引用 / 254
14.2.6 右值引用變量是左值 / 255
14.3 引用聲明符消去規(guī)則 / 256
14.3.1 完美轉(zhuǎn)發(fā) / 256
14.3.2 實例:智能的min函數(shù) / 260
14.4 移動與異常 / 263
14.4.1 遷移數(shù)據(jù)的風(fēng)險 / 263
14.4.2 關(guān)鍵字noexcept / 265
14.4.3 轉(zhuǎn)義函數(shù)模板 / 267
14.4.4 移動的效率問題 / 268
14.5 本章小結(jié) / 269
第15章 模板新語法 / 270
15.1 變長參數(shù)模板 / 270
15.1.1 參數(shù)包 / 271
15.1.2 參數(shù)包的內(nèi)容 / 272
15.1.3 參數(shù)包的展開模式 / 273
15.1.4 遍歷參數(shù)包的內(nèi)容 / 274
15.1.5 輕松實現(xiàn)元組 / 275
15.2 擴(kuò)展的類型推導(dǎo)機(jī)制 / 276
15.2.1 自動類型變量 / 277
15.2.2 提取表達(dá)式結(jié)果類型 / 278
15.2.3 函數(shù)后置返回類型 / 280
15.3 其他模板新特性 / 281
15.3.1 外部模板實例 / 281
15.3.2 模板別名 / 282
15.3.3 連續(xù)的右尖括號 / 282
15.4 本章小結(jié) / 283
第16章 C++11新特性集錦 / 284
16.1 λ表達(dá)式 / 284
16.1.1 λ表達(dá)式語法 / 284
16.1.2 變量捕獲 / 285
16.2 初值列表新用法 / 290
16.2.1 構(gòu)造變量 / 290
16.2.2 初值封裝類模板 / 291
16.3 標(biāo)準(zhǔn)容器與算法的變化 / 292
16.3.1 對應(yīng)右值引用 / 292
16.3.2 對應(yīng)變長參數(shù)模板 / 293
16.3.3 對應(yīng)初值列表 / 294
16.4 標(biāo)準(zhǔn)元組類模板 / 294
16.5 智能指針 / 296
16.5.1 獨占指針unique_ptr / 297
16.5.2 共享指針shared_ptr與weak_ptr / 298
16.6 基于范圍的for循環(huán) / 299
16.7 拾遺 / 300
16.8 本章小結(jié) / 301

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號