《Boost程序庫(kù)探秘:深度解析C++準(zhǔn)標(biāo)準(zhǔn)庫(kù)》是2012年清華大學(xué)出版社出版的圖書,作者是羅劍鋒。

基本信息

作者:羅劍鋒

ISBN:9787302274858

定價(jià):7 9元

印次:1-1

裝幀:平裝

印刷日期:2 0 1 2-2-9

圖書簡(jiǎn)介

Boost程序庫(kù)由C++標(biāo)準(zhǔn)委員會(huì)部分成員所設(shè)立的Boost社區(qū)開發(fā)并維護(hù),它功能強(qiáng)大、構(gòu)造精巧、跨平臺(tái)、開源并且完全免費(fèi),被稱為“C++‘準(zhǔn)’標(biāo)準(zhǔn)庫(kù)”,已被廣泛應(yīng)用在實(shí)際軟件開發(fā)中。

C++的最新標(biāo)準(zhǔn)(C++11)已經(jīng)正式公布,而早在這之前,Boost就已經(jīng)使用庫(kù)的形式實(shí)現(xiàn)了大部分新功能——而且是完全基于C++98標(biāo)準(zhǔn)實(shí)現(xiàn)的,內(nèi)容涵蓋智能指針、文本處理、并發(fā)、模板元等許多領(lǐng)域,其范圍之廣內(nèi)涵之深甚至要超過C++11標(biāo)準(zhǔn),極大地增強(qiáng)了C++的功能和表現(xiàn)力。

本書基于Boost1.47版,深入探討了其中的許多重要組件,包括迭代器、函數(shù)對(duì)象、容器、流處理、序列化以及C++語言中最復(fù)雜最具威力的模板元編程,并專辟一章詳細(xì)闡述Boost的開發(fā)實(shí)例,具有較強(qiáng)的實(shí)用性,可幫助讀者更好更快地理解掌握Boost的高級(jí)用法。

全書內(nèi)容豐富、組織得當(dāng)、概念清晰、講解細(xì)致,是廣大C++程序員和愛好者的必備好書。

目錄

目錄

第0章 導(dǎo)讀 1

0.1 關(guān)于本書 1

0.2 讀者對(duì)象 2

0.3 本書的風(fēng)格 3

0.4 本書的開發(fā)環(huán)境 3

0.5 本書的結(jié)構(gòu) 4

0.6 如何閱讀本書 5

第1章 模板元編程(Ⅰ) 7

1.1 模板元編程概述 7

1.1.1 元數(shù)據(jù) 8

1.1.2 元函數(shù) 9

1.1.3 元函數(shù)轉(zhuǎn)發(fā) 10

1.1.4 方便的工具 11

1.1.5 應(yīng)用示例 12

1.2 type_traits 14

1.2.1 概述 14

1.2.2 元數(shù)據(jù)類別(Ⅰ) 15

1.2.3 元數(shù)據(jù)類別(Ⅱ) 17

1.2.4 元數(shù)據(jù)屬性 18

1.2.5 元數(shù)據(jù)之間的關(guān)系 20

1.2.6 元數(shù)據(jù)轉(zhuǎn)換 21

1.2.7 解析函數(shù)元數(shù)據(jù) 25

1.2.8 實(shí)現(xiàn)原理 26

1.2.9 應(yīng)用示例 28

1.3 總結(jié) 29

第2章 實(shí)用工具 31

2.1 compressed_pair 31

2.1.1 什么是空類 31

2.1.2 類摘要 33

2.1.3 構(gòu)造與賦值 34

2.1.4 用法 35

2.1.5 實(shí)現(xiàn)原理 36

2.1.6 功能擴(kuò)展 37

2.2 checked_delete 40

2.2.1 函數(shù)的用法 41

2.2.2 函數(shù)對(duì)象的用法 42

2.2.3 帶檢查的刪除 44

2.2.4 實(shí)現(xiàn)原理 45

2.2.5 使用建議 47

2.3 addressof 47

2.3.1 用法 47

2.3.2 實(shí)現(xiàn)原理 49

2.3.3 使用建議 49

2.4 value_initialized 50

2.4.1 變量的初始化 50

2.4.2 initialized 51

2.4.3 用法 52

2.4.4 value_initialized 52

2.4.5 更方便的用法 53

2.5 base_from_member 54

2.5.1 類摘要 54

2.5.2 用法 55

2.5.3 進(jìn)一步的用法 57

2.6 conversion 59

2.6.1 標(biāo)準(zhǔn)轉(zhuǎn)型操作符 59

2.6.2 多態(tài)對(duì)象的轉(zhuǎn)型 60

2.6.3 polymorphic_downcast 61

2.6.4 polymorphic_cast 62

2.6.5 使用模板元編程實(shí)現(xiàn)轉(zhuǎn)型 63

2.7 numeric/conversion 66

2.8 pointer 67

2.8.1 pointee 67

2.8.2 indirect_reference 69

2.8.3 pointer_to_other 69

2.8.4 compare_pointees 70

2.9 scope_exit 72

2.9.1 用法 72

2.9.2 應(yīng)用示例 73

2.9.3 實(shí)現(xiàn)原理 74

2.9.4 注意事項(xiàng) 75

2.10 總結(jié) 76

第3章 迭代器 79

3.1 迭代器概述 79

3.1.1 迭代器模式 79

3.1.2 標(biāo)準(zhǔn)迭代器 80

3.1.3 新式迭代器 81

3.1.4 標(biāo)準(zhǔn)迭代器工具 83

3.1.5 迭代器與算法 84

3.2 next_prior 84

3.2.1 函數(shù)聲明 85

3.2.2 用法 85

3.3 iterator_traits 87

3.3.1 標(biāo)準(zhǔn)迭代器特征類 87

3.3.2 類摘要 88

3.3.3 用法 89

3.4 iterator_facade 89

3.4.1 迭代器的核心操作 90

3.4.2 類摘要 90

3.4.3 用法 92

3.5 iterator_adaptor 96

3.5.1 類摘要 96

3.5.2 用法 98

3.6 迭代器工具 99

3.6.1 共享容器迭代器 99

3.6.2 發(fā)生器迭代器 102

3.6.3 逆向迭代器 104

3.6.4 間接迭代器 105

3.6.5 計(jì)數(shù)迭代器 107

3.6.6 函數(shù)輸入迭代器 110

3.6.7 函數(shù)輸出迭代器 113

3.6.8 過濾迭代器 115

3.6.9 轉(zhuǎn)換迭代器 118

3.6.10 索引迭代器 119

3.6.11 組合迭代器 121

3.7 總結(jié) 124

第4章 函數(shù)對(duì)象 127

4.1 hash 127

4.1.1 類摘要 128

4.1.2 用法 129

4.1.3 實(shí)現(xiàn)原理 130

4.1.4 擴(kuò)展hash 131

4.2 mem_fn 134

4.2.1 工作原理 134

4.2.2 用法 134

4.2.3 其他議題 136

4.3 factory 137

4.3.1 類摘要 138

4.3.2 用法 138

4.3.3 value_factory 141

4.3.4 使用typeof庫(kù) 141

4.4 forward 142

4.4.1 類摘要 142

4.4.2 用法 143

4.5 總結(jié) 145

第5章 指針容器 147

5.1 概述 147

5.1.1 入門示例 148

5.1.2 指針容器的優(yōu)缺點(diǎn) 151

5.1.3 可克隆概念 152

5.1.4 克隆分配器 153

5.1.5 指針容器的分類 154

5.2 指針容器的共通能力 157

5.2.1 模板參數(shù) 157

5.2.2 構(gòu)造與賦值

5.2.3 訪問元素 160

5.2.4 其他能力 162

5.3 序列指針容器適配器 163

5.3.1 配置元函數(shù) 163

5.3.2 類摘要 164

5.3.3 接口解說 166

5.3.4 代碼示例 166

5.4 ptr_vector 167

5.4.1 類摘要 168

5.4.2 用法 169

5.5 ptr_deque 170

5.5.1 類摘要 170

5.5.2 用法 171

5.6 ptr_list 172

5.6.1 類摘要 172

5.6.2 用法 173

5.7 ptr_array 174

5.7.1 類摘要 174

5.7.2 用法 175

5.8 ptr_circular_buffer 177

5.8.1 類摘要 177

5.8.2 用法 178

5.9 空指針處理 179

5.9.1 禁用空指針 179

5.9.2 允許空指針 179

5.9.3 使用空指針 181

5.9.4 空對(duì)象模式 182

5.10 關(guān)聯(lián)指針容器的共通能力 184

5.10.1 類摘要 184

5.10.2 接口解說 185

5.11 集合指針容器適配器 186

5.11.1 配置元函數(shù) 186

5.11.2 ptr_set_adapter 187

5.11.3 ptr_multiset_adapter 188

5.12 ptr_set和ptr_multiset 189

5.12.1 類摘要 189

5.12.2 用法 190

5.13 ptr_unordered_set和ptr_

unordered_multiset 191

5.13.1 類摘要 191

5.13.2 用法 193

5.14 映射指針容器適配器 194

5.14.1 配置元函數(shù) 194

5.14.2 ptr_map_adapter 195

5.14.3 ptr_multimap_adapter 197

5.15 ptr_map和ptr_multimap 198

5.15.1 類摘要 198

5.15.2 用法 199

5.16 ptr_unordered_map和ptr_

unordered_multimap 200

5.16.1 類摘要 200

5.16.2 用法 202

5.17 使用assign庫(kù) 203

5.17.1 向容器添加元素 203

5.17.2 初始化容器元素 204

5.18 使用算法 205

5.18.1 標(biāo)準(zhǔn)算法 205

5.18.2 序列指針容器的算法 209

5.18.3 關(guān)聯(lián)指針容器的算法 212

5.19 其他議題 214

5.19.1 異常 214

5.19.2 間接函數(shù)對(duì)象 215

5.19.3 插入迭代器 216

5.19.4 使用視圖分配器 217

5.19.5 可克隆性的再討論 218

5.19.6 序列化 219

5.20 總結(jié) 219

第6章 侵入式容器 221

6.1 概述 221

6.1.1 手工實(shí)現(xiàn)鏈表 222

6.1.2 intrusive庫(kù)介紹 223

6.2 入門示例 224

6.2.1 使用基類掛鉤 224

6.2.2 使用成員掛鉤 225

6.3 基本概念 227

6.3.1 節(jié)點(diǎn) 228

6.3.2 節(jié)點(diǎn)特征 228

6.3.3 節(jié)點(diǎn)算法 229

6.3.4 值特征 230

6.3.5 掛鉤 231

6.3.6 選項(xiàng) 232

6.3.7 處置器 234

6.3.8 克隆 234

6.4 鏈表 235

6.4.1 節(jié)點(diǎn)和算法 235

6.4.2 基類掛鉤 236

6.4.3 成員掛鉤 237

6.4.4 list類摘要 238

6.4.5 list的基本用法 240

6.4.6 list的特有用法 242

6.5 有序集合 246

6.5.1 節(jié)點(diǎn)和算法 246

6.5.2 基類掛鉤 247

6.5.3 成員掛鉤 248

6.5.4 set類摘要 248

6.5.5 set的基本用法 250

6.5.6 set的特有用法 251

6.5.7 multiset類摘要 253

6.5.8 multiset的用法 254

6.6 無序集合 254

6.6.1 節(jié)點(diǎn)和算法 255

6.6.2 基類掛鉤 255

6.6.3 成員掛鉤 256

6.6.4 unordered_set類摘要 257

6.6.5 unordered_set的基本用法 258

6.6.6 unordered_set的特有用法 260

6.6.7 unordered_multiset類摘要 263

6.6.8 unordered_multiset的用法 263

6.7 其他議題 264

6.7.1 同時(shí)使用多個(gè)掛鉤 264

6.7.2 鏈接模式 266

6.7.3 萬能掛鉤 266

6.8 總結(jié) 267

第7章 多索引容器 269

7.1 概述 269

7.2 入門示例 270

7.2.1 簡(jiǎn)單的例子 270

7.2.2 復(fù)雜的例子 271

7.2.3 更復(fù)雜的例子 273

7.3 基本概念 276

7.3.1 索引 276

7.3.2 索引說明 277

7.3.3 鍵提取器 278

7.3.4 索引說明列表 279

7.3.5 索引標(biāo)簽 279

7.3.6 多索引容器 280

7.4 鍵提取器 281

7.4.1 定義 281

7.4.2 identity 282

7.4.3 member 283

7.4.4 const_mem_fun 284

7.4.5 mem_fun 286

7.4.6 global_fun 287

7.4.7 自定義鍵提取器 287

7.5 序列索引 288

7.5.1 索引說明 288

7.5.2 類摘要 289

7.5.3 用法 290

7.6 隨機(jī)訪問索引 292

7.6.1 索引說明 292

7.6.2 類摘要 292

7.6.3 用法 293

7.7 有序索引 294

7.7.1 索引說明 295

7.7.2 類摘要 295

7.7.3 基本用法 297

7.7.4 高級(jí)用法 298

7.8 散列索引 301

7.8.1 索引說明 302

7.8.2 類摘要 302

7.8.3 用法 303

7.9 修改元素 305

7.9.1 替換元素 305

7.9.2 修改元素 306

7.9.3 修改鍵 309

7.10 多索引容器 310

7.10.1 類摘要 310

7.10.2 用法 311

7.11 組合索引鍵 314

7.11.1 類摘要 314

7.11.2 用法 315

7.11.3 輔助工具 316

7.12 總結(jié) 318

第8章 流處理 319

8.1 概述 319

8.1.1 標(biāo)準(zhǔn)庫(kù)的流處理 319

8.1.2 Boost的流處理 321

8.2 入門示例 322

8.2.1 示例1 322

8.2.2 示例2 324

8.3 設(shè)備的特征 325

8.3.1 設(shè)備的字符類型 325

8.3.2 設(shè)備的模式 326

8.3.3 設(shè)備的分類 328

8.4 設(shè)備 329

8.4.1 設(shè)備概述 329

8.4.2 數(shù)組設(shè)備 330

8.4.3 標(biāo)準(zhǔn)容器設(shè)備 332

8.4.4 文件設(shè)備 334

8.4.5 空設(shè)備 335

8.5 過濾器 336

8.5.1 過濾器概述 337

8.5.2 管道和設(shè)備鏈 337

8.5.3 計(jì)數(shù)過濾器 339

8.5.4 正則表達(dá)式過濾器(Ⅰ) 341

8.5.5 正則表達(dá)式過濾器(Ⅱ) 344

8.5.6 壓縮過濾器 345

8.6 流 348

8.6.1 基本流 348

8.6.2 過濾流 349

8.7 流處理函數(shù) 352

8.8 定制設(shè)備 353

8.8.1 定制源設(shè)備 354

8.8.2 定制接收設(shè)備 356

8.9 定制過濾器 357

8.9.1 過濾器實(shí)現(xiàn)原理 357

8.9.2 aggregate_filter 358

8.9.3 basic_line_filter 360

8.9.4 手工打造過濾器 361

8.10 組合設(shè)備 365

8.10.1 combine 365

8.10.2 compose 366

8.10.3 tee 367

8.11 其他議題 369

8.12 總結(jié) 370

第9章 序列化 373

9.1 編譯與使用 373

9.1.1 編譯 373

9.1.2 使用 376

9.2 入門示例 376

9.2.1 示例1 376

9.2.2 示例2 378

9.2.3 示例3 379

9.3 基本概念 381

9.3.1 存檔(archive) 381

9.3.2 可序列化 382

9.3.3 序列化和反序列化 383

9.4 存檔 383

9.4.1 輸出存檔 383

9.4.2 輸入存檔 385

9.4.3 類繼承體系 386

9.4.4 XML格式存檔 387

9.4.5 異常 388

9.5 使用序列化 389

9.5.1 基本類型的序列化 389

9.5.2 數(shù)組的序列化 390

9.5.3 標(biāo)準(zhǔn)類型的序列化 392

9.5.4 標(biāo)準(zhǔn)容器的序列化 393

9.5.5 非標(biāo)準(zhǔn)容器的序列化 394

9.5.6 Boost類型的序列化 395

9.5.7 Boost容器的序列化 397

9.6 定制序列化 399

9.6.1 可序列化的要求 399

9.6.2 侵入式可序列化 402

9.6.3 非侵入式可序列化 403

9.6.4 Boost類型的可序列化 404

9.6.5 Boost容器的可序列化 407

9.7 高級(jí)定制序列化 410

9.7.1 派生類的序列化 410

9.7.2 序列化的版本 411

9.8 指針的序列化 413

9.8.1 指針可序列化的要求 413

9.8.2 原始指針的序列化 414

9.8.3 智能指針的序列化 414

9.8.4 派生類指針的序列化 415

9.8.5 指針容器的序列化 417

9.9 實(shí)用工具 417

9.9.1 BOOST_STRONG_

TYPEDEF 417

9.9.2 BOOST_STATIC_

WARNING 418

9.9.3 smart_cast 418

9.9.4 base64編解碼 419

9.9.5 base16編解碼 422

9.10 總結(jié) 424

第10章 泛型編程 427

10.1 enable_if 427

10.1.1 類摘要 428

10.1.2 應(yīng)用于模板函數(shù) 429

10.1.3 應(yīng)用于模板類 430

10.1.4 lazy_enable_if 431

10.2 call_traits 431

10.2.1 類摘要 432

10.2.2 用法 432

10.2.3 實(shí)現(xiàn)原理 434

10.3 concept_check 436

10.3.1 概述 436

10.3.2 基本概念檢查 437

10.3.3 函數(shù)對(duì)象概念檢查 438

10.3.4 標(biāo)準(zhǔn)迭代器概念檢查 439

10.3.5 新式迭代器概念檢查 440

10.3.6 容器概念檢查 442

10.3.7 在函數(shù)聲明中的概念

檢查 444

10.3.8 概念原型類 445

10.4 function_types 446

10.4.1 屬性標(biāo)簽 447

10.4.2 函數(shù)類型分類 448

10.4.3 函數(shù)類型分解 449

10.4.4 函數(shù)類型合成 451

10.4.5 其他議題 452

10.5 總結(jié) 452

第11章 模板元編程(Ⅱ) 455

11.1 mpl概述 455

11.2 mpl的整數(shù)類型 456

11.2.1 概述 456

11.2.2 整數(shù)類型 458

11.2.3 bool類型 459

11.2.4 基本運(yùn)算 460

11.3 mpl的流程控制 464

11.3.1 if_和if_c 464

11.3.2 eval_if和eval_if_c 465

11.4 mpl的容器 467

11.4.1 概述 467

11.4.2 vector 468

11.4.3 string 469

11.4.4 map 471

11.4.5 相關(guān)元函數(shù) 472

11.5 mpl的迭代器 473

11.5.1 概述 473

11.5.2 相關(guān)元函數(shù) 474

11.6 mpl的算法 475

11.6.1 插入器 475

11.6.2 查詢算法 476

11.6.3 變換算法 478

11.6.4 運(yùn)行時(shí)算法 479

11.7 mpl的高級(jí)用法 481

11.7.1 高階元數(shù)據(jù) 481

11.7.2 占位符 482

11.7.3 bind表達(dá)式 483

11.7.4 lambda表達(dá)式 484

11.7.5 算法的高級(jí)應(yīng)用 485

11.8 mpl的調(diào)試 488

11.8.1 斷言 488

11.8.2 打印輸出 491

11.9 mpl實(shí)例研究 492

11.9.1 泛型編程版本 493

11.9.2 元編程第1版 495

11.9.3 元編程第2版 497

11.10 總結(jié) 499

第12章 開發(fā)實(shí)踐 501

12.1 基本工具 501

12.1.1 標(biāo)準(zhǔn)整數(shù) 502

12.1.2 并發(fā) 503

12.1.3 日志 506

12.2 第一個(gè)TCP服務(wù)器 507

12.2.1 tcp_buffer 508

12.2.2 tcp_server 510

12.2.3 tcp_session 514

12.2.4 驗(yàn)證 519

12.2.5 使用回調(diào)函數(shù) 520

12.2.6 簡(jiǎn)單協(xié)議的實(shí)現(xiàn) 523

12.2.7 HTTP協(xié)議的實(shí)現(xiàn) 529

12.3 多線程工具 532

12.3.1 job_queue 532

12.3.2 worker 535

12.3.3 scheduler 539

12.3.4 safe_map 541

12.3.5 safe_singleton 546

12.4 第二個(gè)TCP服務(wù)器 547

12.4.1 消息結(jié)構(gòu)定義 548

12.4.2 tcp_message 549

12.4.3 tcp_session 552

12.4.4 tcp_server 558

12.4.5 實(shí)現(xiàn)echo協(xié)議 560

12.4.6 實(shí)現(xiàn)聊天室 562

12.5 總結(jié) 571

第13章 Effective Boost 573

13.1 基本原則 573

13.2 內(nèi)存管理 577

13.3 容器、迭代器和算法 578

13.4 其他 580

13.5 結(jié)束語 582

附錄A 推薦書目 583

附錄B Boost程序庫(kù)組件索引 585

附錄C 程序員的工具箱 597