Boost程序庫完全開發指南――深入C++"準”標準庫(第4版)

Boost程序庫完全開發指南――深入C++"準”標準庫(第4版) pdf epub mobi txt 電子書 下載 2025

羅劍鋒 著
圖書標籤:
  • C++
  • Boost
  • 程序庫
  • 開發指南
  • C++標準庫
  • 深入學習
  • 編程技術
  • 技術圖書
  • 計算機科學
  • 代碼實現
  • 第四版
想要找書就要到 靜思書屋
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 電子工業齣版社
ISBN:9787121324604
版次:4
商品編碼:12174707
品牌:Broadview
包裝:平裝
開本:16開
齣版時間:2017-10-01
用紙:膠版紙
頁數:588
字數:812000
正文語種:中文

具體描述

産品特色

編輯推薦

適讀人群 :本書內容豐富、結構嚴謹、詳略得當、講解透徹,帶領讀者領略瞭C++的最新前沿技術,相信會是每位C++程序員的必備工具書。

《Boost程序庫完全開發指南——深入C++"準”標準庫(第4版)》內容豐富、結構嚴謹、詳略得當、講解透徹,帶領讀者領略瞭C++的*新前沿技術,相信會是每位C++程序員的必備工具書。

內容簡介

Boost 是一個功能強大、構造精巧、跨平颱、開源並且完全免費的C++程序庫,有著“C++‘準’標準庫”的美譽。Boost 由C++標準委員會部分成員所設立的Boost 社區開發並維護,使用瞭許多現代C++編程技術,內容涵蓋字符串處理、正則錶達式、容器與數據結構、並發編程、函數式編程、泛型編程、設計模式實現等許多領域,極大地豐富瞭C++的功能和錶現力,能夠使C++軟件開發更加簡捷、優雅、靈活和高效。本書基於2017 年4 月發布的Boost1.64 版,介紹瞭其中的所有140 餘個庫,並且結閤C++11/14/17標準詳細、深入地講解瞭其中數十個庫,同時實現瞭若乾頗具實用價值的工具類和函數,可幫助讀者迅速地理解、掌握Boost 的用法並應用於實際的開發工作。本書內容豐富、結構嚴謹、詳略得當、講解透徹,帶領讀者領略瞭C++的*新前沿技術,相信會是每位C++程序員的必備工具書。

作者簡介

羅劍鋒(網名Chrono)在1996年就讀於東北財經大學;1997年開始接觸C/C++;1998年參加計算機軟件專業技術資格和水平考試,獲高級程序員資質;2003年畢業於北京理工大學,獲計算機專業碩士學位。主要研究方嚮為C/C++、設計模式、高性能網絡服務器開發,業餘愛好是閱讀、旅遊、欣賞音樂和電影。

目錄

目錄
第 0 章導讀 .................................................... 1
0.1 關於本書........................................... 1
0.2 讀者對象........................................... 1
0.3 術語與風格...................................... 2
0.4 語言標準........................................... 3
0.5 本書的結構...................................... 4
0.6 如何閱讀本書.................................. 5
0.7 本書的源碼...................................... 5
第 1 章總論 .................................................... 7
1.1 簡介................................................... 7
1.1.1 獲取方式................................. 8
1.1.2 目錄結構................................. 8
1.1.3 使用方式................................. 9
1.2 開發環境........................................... 9
1.2.1 操作係統和編譯器................10
1.2.2 快捷安裝................................10
1.2.3 完全安裝................................10
1.2.4 定製安裝................................11
1.2.5 編譯驗證................................11
1.3 構建工具..........................................12
1.3.1 安裝方式................................12
1.3.2 構建腳本................................12
1.3.3 構建語言...............................13
1.3.4 構建命令...............................14
1.4 總結..................................................14
第 2 章時間與日期......................................15
2.1 timer 庫概述....................................15
2.2 timer .................................................16
2.2.1 用法.......................................16
2.2.2 類摘要...................................17
2.2.3 使用建議...............................18
2.3 progress_timer .................................18
2.3.1 用法.......................................18
2.3.2 類摘要...................................19
2.4 progress_display..............................19
2.4.1 類摘要...................................20
2.4.2 用法.......................................21
2.4.3 注意事項...............................22
2.5 date_time 庫概述............................23
2.5.1 使用方式...............................23
2.5.2 基本概念...............................24
2.6 處理日期..........................................24
2.6.1 日期.......................................25
2.6.2 創建日期對象........................25
目錄
Boost 程序庫完全開發指南―深入C++“準”標準庫(第4 版)
X
2.6.3 訪問日期................................27
2.6.4 日期的輸齣............................28
2.6.5 轉換C 結構...........................29
2.6.6 日期長度................................29
2.6.7 日期運算................................30
2.6.8 日期區間................................31
2.6.9 日期區間運算........................33
2.6.10 日期迭代器..........................34
2.6.11 其他功能..............................35
2.6.12 綜閤運用..............................36
2.7 處理時間..........................................38
2.7.1 時間長度................................39
2.7.2 操作時間長度........................40
2.7.3 時間精確度............................42
2.7.4 時間點...................................43
2.7.5 創建時間點對象....................44
2.7.6 操作時間點對象....................44
2.7.7 轉換C 結構...........................45
2.7.8 時間區間................................46
2.7.9 時間迭代器............................46
2.7.10 綜閤運用..............................47
2.8 date_time 庫的高級議題...............49
2.8.1 編譯配置宏............................50
2.8.2 自定義字麵值........................50
2.8.3 格式化時間............................51
2.8.4 本地時間................................51
2.9 總結..................................................53
第 3 章內存管理...........................................55
3.1 smart_ptr 庫概述.............................55
3.1.1 RAII 機製..............................55
3.1.2 智能指針................................56
3.2 scoped_ptr ........................................57
3.2.1 類摘要...................................57
3.2.2 操作函數................................58
3.2.3 用法.......................................59
3.2.4 對比標準...............................61
3.3 shared_ptr ........................................63
3.3.1 類摘要...................................63
3.3.2 操作函數...............................64
3.3.3 用法.......................................65
3.3.4 工廠函數...............................67
3.3.5 應用於標準容器....................68
3.3.6 應用於橋接模式....................69
3.3.7 應用於工廠模式....................70
3.3.8 定製刪除器............................72
3.3.9 高級議題...............................73
3.4 weak_ptr...........................................76
3.4.1 類摘要...................................76
3.4.2 用法.......................................77
3.4.3 對象自我管理........................78
3.4.4 打破循環引用........................79
3.5 intrusive_ptr.....................................80
3.5.1 類摘要...................................80
3.5.2 用法.......................................81
3.5.3 引用計數器............................82
3.6 pool 庫概述.....................................83
3.7 pool...................................................83
3.7.1 類摘要...................................84
3.7.2 操作函數...............................84
3.7.3 用法.......................................85
3.8 object_pool ......................................86
3.8.1 類摘要...................................86
3.8.2 操作函數...............................86
3.8.3 用法.......................................87
3.8.4 更多的構造參數....................88
3.9 singleton_pool .................................89
3.9.1 類摘要...................................89
3.9.2 用法.......................................90
3.10 pool_alloc ......................................91
目錄
Boost 程序庫完全開發指南―深入C++“準”標準庫(第4 版)
XI
3.11 總結................................................91
第 4 章實用工具...........................................93
4.1 noncopyable.....................................93
4.1.1 原理.......................................94
4.1.2 用法.......................................94
4.1.3 實現.......................................95
4.2 ignore_unused..................................96
4.2.1 基本用法................................96
4.2.2 模闆用法................................97
4.3 optional.............................................97
4.3.1 類摘要...................................98
4.3.2 操作函數................................99
4.3.3 用法.....................................100
4.3.4 工廠函數..............................101
4.4 assign..............................................102
4.4.1 list_inserter...........................102
4.4.2 operator+=............................103
4.4.3 operator () ............................104
4.4.4 generic_list...........................105
4.4.5 初始化容器..........................106
4.4.6 重復輸入..............................108
4.4.7 操作非標準容器..................109
4.4.8 其他議題..............................110
4.5 tribool .............................................110
4.5.1 類摘要.................................110
4.5.2 用法.....................................111
4.5.3 為第三態更名......................112
4.5.4 輸入/輸齣............................113
4.5.5 其他議題..............................113
4.6 operators.........................................114
4.6.1 基本運算概念......................116
4.6.2 算術操作符..........................116
4.6.3 基類鏈.................................118
4.6.4 復閤運算概念......................119
4.6.5 相等與等價..........................121
4.6.6 解引用操作符......................122
4.6.7 下標操作符..........................123
4.6.8 布爾轉型操作符..................124
4.6.9 二元操作符..........................126
4.7 exception........................................126
4.7.1 標準庫中的異常..................127
4.7.2 類摘要.................................127
4.7.3 嚮異常傳遞信息..................129
4.7.4 錯誤信息類..........................130
4.7.5 包裝標準異常......................132
4.7.6 使用函數拋齣異常..............132
4.7.7 獲得更多信息......................133
4.7.8 高級議題.............................134
4.8 uuid.................................................136
4.8.1 類摘要.................................136
4.8.2 用法.....................................137
4.8.3 生成器.................................139
4.8.4 增強用法.............................141
4.8.5 轉換字符串..........................142
4.8.6 摘要算法.............................143
4.9 config..............................................144
4.9.1 編譯期字符串化..................144
4.9.2 靜態整型常量......................145
4.10 utility ............................................145
4.10.1 二進製常量........................146
4.10.2 調用函數名........................147
4.11 總結..............................................148
第 5 章字符串與文本處理.......................151
5.1 lexical_cast ....................................151
5.1.1 函數聲明.............................152
5.1.2 用法.....................................152
5.1.3 錯誤處理.............................153
5.1.4 轉換對象的要求..................154
目錄
Boost 程序庫完全開發指南―深入C++“準”標準庫(第4 版)
XII
5.1.5 應用於自定義類..................155
5.1.6 對比標準..............................156
5.2 format .............................................157
5.2.1 簡單的例子..........................157
5.2.2 輸入操作符..........................159
5.2.3 類摘要.................................160
5.2.4 格式化語法..........................161
5.2.5 性能優化..............................162
5.2.6 高級用法..............................162
5.3 string_ref ........................................164
5.3.1 類摘要.................................164
5.3.2 用法.....................................166
5.4 string_algo .....................................167
5.4.1 簡單示例..............................168
5.4.2 算法概述..............................169
5.4.3 大小寫轉換..........................169
5.4.4 判斷式(算法) ..................170
5.4.5 判斷式(函數對象) ..........172
5.4.6 分類.....................................172
5.4.7 修剪.....................................173
5.4.8 查找.....................................174
5.4.9 替換與刪除..........................176
5.4.10 分割...................................177
5.4.11 閤並...................................179
5.4.12 查找(分割)迭代器.........179
5.5 xpressive.........................................181
5.5.1 使用方式..............................181
5.5.2 正則錶達式簡介..................182
5.5.3 類摘要.................................183
5.5.4 正則匹配..............................185
5.5.5 正則查找..............................187
5.5.6 正則替換..............................188
5.5.7 正則迭代..............................189
5.5.8 正則分詞..............................190
5.5.9 高級議題..............................192
5.6 總結................................................194
第 6 章正確性與測試................................197
6.1 assert...............................................197
6.1.1 基本用法.............................197
6.1.2 禁用斷言.............................198
6.1.3 擴展用法.............................199
6.2 static_assert ...................................200
6.2.1 定義.....................................201
6.2.2 用法.....................................201
6.2.3 使用建議.............................203
6.3 lightweight_test .............................203
6.3.1 測試斷言.............................203
6.3.2 用法.....................................204
6.3.3 測試元編程..........................205
6.4 test ..................................................205
6.4.1 最小化測試..........................206
6.4.2 單元測試框架......................207
6.4.3 測試斷言.............................208
6.4.4 測試主體.............................209
6.4.5 測試實例.............................210
6.4.6 測試夾具.............................212
6.4.7 測試日誌.............................214
6.4.8 運行參數.............................215
6.4.9 高級議題.............................216
6.5 總結................................................219
第 7 章容器與數據結構............................221
7.1 array................................................221
7.1.1 類摘要.................................222
7.1.2 操作函數.............................222
7.1.3 用法.....................................223
7.1.4 能力限製.............................224
7.1.5 初始化.................................224
7.1.6 對比標準.............................225
7.2 dynamic_bitset ..............................225
目錄
Boost 程序庫完全開發指南―深入C++“準”標準庫(第4 版)
XIII
7.2.1 類摘要.................................226
7.2.2 創建與賦值..........................227
7.2.3 容器操作..............................228
7.2.4 基本運算..............................229
7.2.5 訪問元素..............................230
7.2.6 類型轉換..............................231
7.2.7 集閤操作..............................232
7.2.8 綜閤運用..............................233
7.3 unordered .......................................234
7.3.1 散列集閤簡介......................234
7.3.2 散列集閤的用法..................236
7.3.3 散列映射簡介......................238
7.3.4 散列映射的用法..................239
7.3.5 高級議題..............................241
7.4 bimap ..............................................243
7.4.1 類摘要.................................243
7.4.2 基本用法..............................244
7.4.3 值的集閤類型......................245
7.4.4 集閤類型的用法..................246
7.4.5 使用標簽類型......................247
7.4.6 使用assign 庫......................249
7.4.7 查找與替換..........................249
7.4.8 投射.....................................251
7.4.9 高級議題..............................252
7.5 circular_buffer ...............................253
7.5.1 類摘要.................................253
7.5.2 用法.....................................254
7.5.3 環形結構..............................255
7.5.4 空間優化..............................256
7.6 tuple ................................................257
7.6.1 二元組.................................257
7.6.2 類摘要.................................258
7.6.3 創建與賦值..........................258
7.6.4 訪問元素..............................260
7.6.5 比較操作..............................261
7.6.6 輸入輸齣.............................261
7.6.7 連結變量.............................262
7.6.8 內部結構.............................263
7.6.9 使用訪問者模式..................264
7.6.10 高級議題...........................266
7.7 any ..................................................269
7.7.1 類摘要.................................269
7.7.2 訪問元素.............................270
7.7.3 用法.....................................271
7.7.4 簡化操作.............................271
7.7.5 保存指針.............................272
7.7.6 輸齣.....................................273
7.7.7 高級議題.............................275
7.8 variant.............................................276
7.8.1 類摘要.................................276
7.8.2 訪問元素.............................277
7.8.3 用法.....................................278
7.8.4 訪問器.................................279
7.8.5 高級議題.............................281
7.9 multi_array.....................................283
7.9.1 類摘要.................................284
7.9.2 用法.....................................285
7.9.3 改變形狀和大小..................287
7.9.4 創建子視圖..........................287
7.9.5 適配普通數組......................289
7.9.6 高級議題.............................290
7.10 property_tree ...............................292
7.10.1 類摘要...............................293
7.10.2 讀取配置信息....................294
7.10.3 寫入配置信息....................296
7.10.4 更多用法...........................297
7.10.5 數據格式...........................298
7.10.6 高級議題...........................300
7.11 總結..............................................302
目錄
Boost 程序庫完全開發指南―深入C++“準”標準庫(第4 版)
XIV
第8 章算法 .................................................305
8.1 foreach............................................305
8.1.1 用法.....................................306
8.1.2 詳細解說..............................307
8.1.3 更優雅的名字......................308
8.1.4 支持的序列類型..................308
8.1.5 存在的問題..........................309
8.2 minmax...........................................310
8.2.1 用法.....................................310
8.2.2 存在的問題..........................311
8.3 minmax_element ...........................311
8.3.1 基本用法..............................312
8.3.2 其他用法..............................312
8.4 algorithm........................................313
8.4.1 clamp ...................................313
8.4.2 clamp_range .........................314
8.4.3 hex/unhex.............................314
8.5 總結................................................316
第 9 章數學與數字....................................317
9.1 math.constants ...............................317
9.1.1 基本用法..............................318
9.1.2 高級用法..............................318
9.2 integer.............................................319
9.2.1 整數特徵..............................319
9.2.2 標準整數類型......................320
9.2.3 整數類型模闆類..................322
9.3 rational............................................325
9.3.1 類摘要.................................326
9.3.2 創建與賦值..........................327
9.3.3 基本運算..............................327
9.3.4 類型轉換..............................328
9.3.5 輸入輸齣..............................328
9.3.6 分子與分母..........................328
9.3.7 其他議題..............................329
9.4 ratio.................................................330
9.4.1 類摘要.................................330
9.4.2 用法.....................................331
9.4.3 數字單位.............................331
9.4.4 字符串錶示..........................333
9.5 crc ...................................................333
9.5.1 類摘要.................................334
9.5.2 預定義的實現類..................334
9.5.3 用法.....................................335
9.6 random............................................336
9.6.1 隨機數發生器......................336
9.6.2 隨機數分布器......................338
9.6.3 變量發生器..........................343
9.6.4 産生隨機數據塊..................344
9.6.5 真隨機數發生器..................345
9.7 總結................................................348
第 10 章操作係統相關..............................349
10.1 system...........................................349
10.1.1 錯誤值...............................350
10.1.2 錯誤類彆...........................350
10.1.3 錯誤代碼...........................352
10.1.4 錯誤異常...........................354
10.2 chrono...........................................354
10.2.1 時間長度...........................355
10.2.2 使用時間長度....................356
10.2.3 時鍾...................................358
10.2.4 時間點...............................360
10.2.5 綜閤運用...........................361
10.3 cpu_timer .....................................363
10.3.1 時間類型...........................364
10.3.2 cpu_timer ...........................364
10.3.4 auto_cpu_timer...................366
10.3.5 定製輸齣格式....................367
10.4 filesystem.....................................368
目錄
Boost 程序庫完全開發指南―深入C++“準”標準庫(第4 版)
XV
10.4.1 類摘要...............................368
10.4.2 路徑錶示............................370
10.4.3 可移植的文件名................372
10.4.4 路徑處理............................372
10.4.5 異常處理............................375
10.4.6 文件狀態............................376
10.4.7 文件屬性............................377
10.4.8 文件操作............................378
10.4.9 迭代目錄............................379
10.4.10 實例1...............................382
10.4.11 實例2...............................383
10.4.12 實例3...............................385
10.4.13 文件流操作......................386
10.5 program_options .........................387
10.5.1 概述...................................387
10.5.3 選項值...............................389
10.5.4 選項描述器........................391
10.5.5 選項描述器的用法............392
10.5.6 分析器...............................394
10.5.7 存儲器...............................395
10.5.8 位置選項值........................396
10.5.9 環境變量............................398
10.5.10 分組選項信息..................399
10.5.11 高級用法..........................401
10.6 總結..............................................404
第 11 章函數與迴調..................................405
11.1 ref..................................................405
11.1.1 類摘要...............................406
11.1.2 基本用法............................407
11.1.3 工廠函數............................407
11.1.4 操作包裝............................408
11.1.5 綜閤應用............................409
11.1.6 對比標準............................410
11.2 bind ...............................................411
11.2.1 工作原理...........................411
11.2.2 綁定普通函數....................413
11.2.3 綁定成員函數....................414
11.2.4 綁定成員變量....................415
11.2.5 綁定函數對象....................416
11.2.6 對比標準...........................416
11.2.7 高級議題...........................417
11.3 function ........................................421
11.3.1 類摘要...............................421
11.3.2 聲明形式...........................422
11.3.3 操作函數...........................423
11.3.4 用法...................................424
11.3.5 使用ref 庫.........................425
11.3.6 用於迴調...........................426
11.3.7 對比auto............................428
11.3.8 對比std::function...............429
11.4 signals2 ........................................429
11.4.1 類摘要...............................430
11.4.2 操作函數...........................431
11.4.3 用法...................................432
11.4.4 返迴值...............................434
11.4.5 閤並器...............................434
11.4.6 管理信號連接....................436
11.4.7 更靈活的管理信號連接.....437
11.4.8 自動管理連接....................439
11.4.9 應用於觀察者模式............441
11.4.10 高級議題..........................444
11.5 總結..............................................449
第 12 章並發編程......................................451
12.1 atomic...........................................451
12.1.1 類摘要...............................452
12.1.2 基本用法...........................454
12.1.3 整數用法...........................455
12.1.4 並發順序一緻性................456
目錄
Boost 程序庫完全開發指南―深入C++“準”標準庫(第4 版)
XVI
12.2 thread............................................458
12.2.1 mutex .................................459
12.2.2 lock_guard..........................461
12.2.3 unique_lock ........................463
12.2.4 lock adapter ........................465
12.2.5 thread .................................467
12.2.6 使用綫程............................469
12.2.7 中斷綫程............................472
12.2.8 thread_group ......................475
12.2.9 call_once ............................476
12.2.10 condition_variable ............477
12.2.11 shared_mutex....................481
12.2.12 future................................483
12.2.13 shared_future ....................486
12.2.14 高級議題..........................487
12.3 asio................................................491
12.3.1 概述...................................491
12.3.2 信號...................................497
12.3.3 定時器...............................501
12.3.4 網絡通信............................507
12.3.5 同步通信............................514
12.3.6 異步通信............................516
12.3.7 解析網絡地址....................521
12.3.8 使用協程............................524
12.3.9 其他議題............................526
12.4 總結..............................................530
第 13 章組件速覽......................................533
13.1 算法..............................................533
13.2 字符串和文本處理.....................534
13.3 容器與數據結構.........................535
13.4 迭代器..........................................536
13.5 函數對象與高級編程................536
13.6 泛型編程.....................................538
13.7 模闆元編程.................................539
13.8 預處理元編程.............................540
13.9 並發編程.....................................540
13.10 數學與數字...............................541
13.11 輸入輸齣...................................542
13.12 操作係統相關...........................543
13.13 語言特性模擬...........................543
13.14 雜項............................................544
13.15 總結............................................546
第 14 章設計模式......................................547
14.1 創建型模式.................................548
14.2 結構型模式.................................549
14.3 行為模式.....................................552
14.4 其他模式.....................................555
14.5 總結..............................................557
第 15 章結束語..........................................559
15.1 未臻完美.....................................559
15.2 錦上添花.....................................560
15.3 工夫在詩外.................................563
15.4 臨彆贈言.....................................564
附錄A 推薦書目.........................................565
附錄B 標準簡述.........................................567
附錄C 關鍵字淺談..................................... 571

前言/序言

  推薦序

  最近一年我電話麵試瞭數十位C++應聘者,慣用的暖場問題是“工作中使用過STL 的哪些組件?用過Boost 的哪些組件?”得到的答案大多集中在vector、map 和shared_ptr。如果對方是在校學生,我一般會問問vector 或map 的內部實現、各種操作的復雜度,以及迭代器失效的可能場景。如果是有經驗的程序員,我還會追問shared_ptr 的綫程安全性、循環引用的後果及如何避免、weak_ptr 的作用等。如果這些都迴答得不錯,進一步還可以問問如何實現綫程安全的引用計數,如何定製刪除動作等。這些問題讓我能迅速地判彆對方的C++水平。我之所以在麵試時問到Boost,是因為其中的許多組件確實可以用於編寫可維護的産品代碼。Boost 包含近百個程序庫,其中不乏具有工程實用價值的佳品。每個人口味與技術背景不一樣,對Boost 的取捨也不一樣。就我的個人經驗而言,首先可以使用絕對無害的庫,例如noncopyable、scoped_ptr、static_assert 等,這些庫的學習和使用都比較簡單,容易入手。其次,有些功能自己實現起來並不睏難,正好Boost 裏提供瞭現成的代碼,那就不妨一用,比如date_time 和circular_buffer 等。然後,在新項目中,對於消息傳遞和資源管理可以考慮采用更加現代的方式,例如用function/bind 在某些情況下代替虛函數作為庫的迴調接口、藉助shared_ptr 實現綫程安全的對象迴調等。這二者會影響整個程序的設計思路與風格,需要通盤考慮,如果正確使用智能指針,在現代C++程序裏一般不需要齣現delete語句。最後,對某些性能不佳的庫保持警惕,比如lexical_cast。總之,在項目組成員人人都能理解並運用的基礎上,適當引入現成的Boost 組件,以減少重復勞動,提高生産力。Boost 是一個寶庫,其中既有可以直接拿來用的代碼,也有值得藉鑒的設計思路。試舉一例:正則錶達式庫regex 對綫程安全的處理。

  早期的 RegEx 類不是綫程安全的,它把“正則錶達式”和“匹配動作”放到瞭一個類裏邊。由於有可變數據,RegEx 的對象不能跨綫程使用。如今的RegEx 明確地區分瞭不可變(immutable)與可變(mutable)的數據,前者可以安全地跨綫程共享,後者則不行。比如正則錶達式本身(basic_regex)與一次匹配的結果(match_results)是不可變的;而匹配動作本身(match_regex)涉及狀態更新,是可變的,於是用可重入的函數將其封裝起來,不讓這些數據泄露給彆的綫程。正是由於做瞭這樣閤理的區分,RegEx 在正常使用時就不必加鎖。Donald Knuth 在“Coders at Work”一書裏錶達瞭這樣一個觀點:如果程序員的工作就是擺弄參數去調用現成的庫,而不知道這些庫是如何實現的,那麼這份職業就沒啥樂趣可言。換句話說,固然我們強調工作中不要重新發明輪子,但是作為一個閤格的程序員,應該具備自製輪子的能力。非不能也,是不為也。

  C/C++語言的一大特點是其標準庫可以用語言自身實現。C 標準庫的strlen、strcpy、strcmp 係列函數是教學與練習的好題材,C++標準庫的complex、string、vector 則是類、資源管理、模闆編程的絕佳示範。在深入瞭解STL 的實現之後,運用STL 自然手到擒來,並能自動避免一些錯誤和低效的用法。

  對於 Boost 也是如此,為瞭消除使用時的疑慮,為瞭用得更順手,有時我們需要適當瞭解其內部實現,甚至編寫簡化版用做對比驗證。但是由於Boost 代碼用到瞭日常應用程序開發中不常見的高級語法和技巧,並且為瞭跨多個平颱和編譯器而大量使用瞭預處理宏,閱讀Boost 源碼並不輕鬆愜意,需要下一番工夫。另一方麵,如果沉迷於這些有趣的底層細節而忘瞭原本要解決什麼問題,恐怕就捨本逐末瞭。

  Boost 中的很多庫是按泛型編程的範式來設計的,對於熟悉麵嚮對象編程的人而言,或許麵臨一個思路的轉變。比如,你得熟悉泛型編程的那套術語,如concept、model、refinement,纔容易讀懂Boost.Threads 文檔中關於各種鎖的描述。我想,對於熟悉STL 設計理念的人而言,這不是什麼大問題。

  在某些領域,Boost 不是唯一的選擇,也不一定是最好的選擇。比如,要生成公式化的源代碼,我會首選用腳本語言寫一小段代碼生成程序,而不用Boost.Preprocessor;要在C++程序中嵌入領域特定語言,我會首選用Lua 或其他語言解釋器,而不用Boost.Proto;要用C++程序解析上下文無關文法,我會首選用ANTLR 來定義詞法與語法規則並生成解析器(parser),而不用Boost.Spirit。總之,使用Boost 時心態要平和,彆較勁去改造C++語言。把它有助於提高生産力的那部分功能充分發揮齣來,讓項目從中受益纔是關鍵。

  要學習 Boost,除瞭閱讀其官方網站的文檔、示例與源碼外,最好能有一本比較全麵的中文書在手邊隨時翻閱。對於不諳英文的開發者,這更是可幸之至。您手上這本《Boost 程序庫完全開發指南》是很好的使用指南與參考手冊。作者由淺入深地介紹瞭Boost 的大部分常用內容,能讓讀者迅速瞭解Boost,並從中找到自己需要的部分。拿到這本書稿之後,我有粗有細地閱讀瞭一遍,總體來看,作者水平很高,也相當務實,對C++和Boost 的理解與運用很到位,我從這本書學到瞭不少新知識。為此,我樂於嚮希望學習Boost 程序庫的開發者推薦這本靠譜的書。

  須知“功不唐捐”,作為一名現代C++程序員,在Boost 上投入的精力定能獲得迴報。

  陳碩

  《代碼大全》譯者之一

  中國·香港

  第4 版前言

  本書初版麵市至今已過去瞭七年的時間,這些年裏我一直在持續關注 Boost/C++的發展和動態,及時更新維護這本書已經成為瞭我的一種習慣甚至是一種生活方式。隨著C++17的發布,編寫新版的工作也就自然而然地提上瞭日程。

  這次修訂的過程也是對自己的一個反省:感覺前幾版有點“貪大求全”,做的是“加法”,恨不得把Boost/C++相關的所有細節都列齣來,未免顯得有些囉唆,所以這次的第4 版就冷靜瞭些,開始做“減法”。在修正筆誤、微調代碼格式、更新date_time、test 等庫之外,刪去瞭幾個實際價值不是很高的組件,例如scoped_array、swap、tokenizer 等,希望精簡後閱讀起來能夠更加順暢,更方便學習研究。

  不過也有聲音反映作者對本書的修訂過於“武斷”“任性”,覺得刪除的內容看不到瞭比較可惜。為瞭彌補新版導緻的“缺憾”,我把之前刪掉的章節都做成瞭PDF 文件,放到瞭GitHub 上,感興趣的讀者可以自行下載查閱。

  祝您閱讀愉快,願我們C++20 時再相見!

  羅劍鋒

  2017 年7 月17 日於 北京 亞運村

  Boost 程序庫完全開發指南—深入C++“準”標準庫(第4 版)

  VI

  第1 版前言

  屈指算來,接觸C++語言至今已經有十餘個年頭瞭。迴首往事,不禁感慨良多。

  緣起

  1996 年我上大學最開始學的是Pascal,不得不說,Pascal 嚴謹的程序風格確實很適閤作為一門教學語言,然而用於實際開發就不那麼閤適瞭(直到齣現Delphi)。由於當時學校並未開設C 語言課程,因此在Pascal 課程結束後我就買書自學C/C++語言,並在次年報名計算機軟件專業技術資格和水平考試,靠著一點點編程和考試的“天分”獲得瞭高級程序員資質(當年很熱衷考級考證,後來就“淡定”多瞭)。雖然有瞭資格證,但我仍然算是個C++的初學者,對於C++的認識還處於C 的麵嚮過程和簡單的基於對象層次上。

  新韆年伊始我考入瞭北京理工大學就讀研究生,因為跟導師做項目開始接觸STL 與C++標準庫,大概是2005 年從1.33 版結識瞭Boost,這纔真正領略瞭C++的精髓。那段時期Java 和C#正在國內大行其道,C++則勢單力薄,有關STL 和C++標準的技術書籍寥寥無幾,而講解Boost 的書更是為零,故對Boost 的學習基本隻能靠自己的摸索與實踐。好在Boost自帶的文檔相當豐富(盡管看全英文的資料十分辛苦),而且源碼也寫得比較清晰規範,在熟悉瞭STL 的基礎上學習Boost 倒也並不算太難。

  但 Boost 的一個最大的特點就是“龐大”,功能組件眾多,要想把它全部裝進腦子裏融會貫通基本上是不可能的,使用時需要經常查閱英文文檔,相當麻煩。因此,在學習的過程中,我逐漸産生瞭編寫學習筆記的想法。一開始隻是一個簡單的純文本文件,記錄瞭一些使用經驗的片斷,隨著積纍不斷增加,純文本形式已經不能滿足知識整理的需求瞭,於是我又把這些文字遷移到瞭Word 文檔裏,把使用經驗分類編目,進行較係統的歸納梳理。慢慢地,這份學習筆記居然有瞭上萬字的規模,成為瞭一份很好的Boost 備忘參考,在日常的開發工作中給瞭我很大的幫助——就像《設計模式》一書中所說的那樣,捕獲瞭很多使用Boost 解決問題的實踐經驗,避免瞭重復發現。不過,這份資料一直僅限於我個人使用,屬於“自娛自樂”的作品,從未示人。

  時間一晃到瞭2010 年1 月份的某天夜裏,不知道是什麼原因我忽然失眠瞭,躺在床上翻來覆去怎麼也睡不著。突然,一個念頭闖入瞭腦海:把Boost 開發經驗整理齣版吧,讓更多人能夠分享這些知識,正所謂“獨樂樂,與眾樂樂,孰樂?”這個大膽的想法的齣現讓我那天的失眠又延長瞭幾



用戶評價

評分

第一次在京東買書,看到優惠就來買瞭,有點失望。直接就把書放在快遞盒子裏。有兩三本右上角有摺痕。關鍵是書不平的。雙十一滿200減100的書都是些沒人買的書,然後還沒有塑料包裝紙。

評分

這種書不多作者辛苦瞭(≧∇≦)/

評分

還沒拆開看

評分

好書,大師的經典之作,長知識瞭。

評分

準標準庫,走起新標準。

評分

第一次收到的書有破損 第二次的還行

評分

這是正版書,包裝非常好,我正需要。

評分

不錯

評分

ngx,是著名的外部服務器,性能優異,運行效率遠超全能的,apache,tomcat,廣泛應用於國內外諸多頂級互聯網公司,nginix,是一個突齣現象,仍突齣,有話您活喲,靈活有效的模塊化結構,可以在不修改核心的前提下增加任意功能擁有帶一個官方及非官方官方的功能模塊,是他長成一個全能的服務器軟件

相關圖書

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.tinynews.org All Rights Reserved. 静思书屋 版权所有