出版時(shí)間:2010-9 出版社:電子工業(yè)出版社 作者:羅劍鋒 頁(yè)數(shù):578
Tag標(biāo)簽:無(wú)
前言
Boost是一個(gè)功能強(qiáng)大、構(gòu)造精巧、跨平臺(tái)、開(kāi)源并且完全免費(fèi)的C++程序庫(kù),有著“C++‘準(zhǔn)’標(biāo)準(zhǔn)庫(kù)”的美譽(yù)。1996年我上大學(xué)最開(kāi)始學(xué)的是Pascal,不得不說(shuō),Pascal的嚴(yán)謹(jǐn)程序風(fēng)格確實(shí)很適合作為一門教學(xué)語(yǔ)言,然而用于實(shí)際開(kāi)發(fā)就不那么合適了(直到出現(xiàn)Delphi)。由于當(dāng)時(shí)學(xué)校并未開(kāi)設(shè)C語(yǔ)言課程,因此在Pascal課程結(jié)束后我就買書自學(xué)C/C++語(yǔ)言,并在次年報(bào)名國(guó)家計(jì)算機(jī)水平考試,靠著一點(diǎn)點(diǎn)編程和考試的“天分”獲得了高級(jí)程序員資質(zhì)(當(dāng)年很熱衷考級(jí)考證,后來(lái)就“淡定”多了)。雖然有了資格證,但我仍然算是個(gè)C++的初學(xué)者,對(duì)于C++的認(rèn)識(shí)還處于C的面向過(guò)程和簡(jiǎn)單的基于對(duì)象層次上。新千年伊始我考入了北京理工大學(xué)就讀研究生,因?yàn)楦鷮?dǎo)師做項(xiàng)目開(kāi)始接觸STL與C++標(biāo)準(zhǔn)庫(kù),大概是2005年從1.33版結(jié)識(shí)了Boost,這才真正領(lǐng)略了C++的精髓。那段時(shí)期Java和C#正在國(guó)內(nèi)大行其道,C++則勢(shì)單力薄,有關(guān)STL和C++標(biāo)準(zhǔn)的技術(shù)書籍寥寥無(wú)幾,而講解Boost的書更是為零,故對(duì)Boost的學(xué)習(xí)基本只能靠自己的摸索與實(shí)踐。好在Boost自帶的文檔相當(dāng)豐富(雖然看全英文的資料十分辛苦),而且源碼也寫得比較清晰規(guī)范,在熟悉了STL的基礎(chǔ)上學(xué)習(xí)Boost倒也并不算太難。但Boost的一個(gè)最大的特點(diǎn)就是“龐大”,功能組件眾多,要想把它全部裝進(jìn)腦子里融會(huì)貫通基本上是不可能的,使用時(shí)需要經(jīng)常查閱英文文檔,相當(dāng)?shù)穆闊?。因此,在學(xué)習(xí)的過(guò)程中,我逐漸產(chǎn)生了編寫學(xué)習(xí)筆記的想法。一開(kāi)始只是一個(gè)簡(jiǎn)單的純文本文件,記錄了一些使用經(jīng)驗(yàn)的片斷,隨著積累的不斷增加,純文本形式已經(jīng)不能夠滿足知識(shí)整理的需求了,于是我又把這些文字遷移到了Word文檔里,把使用經(jīng)驗(yàn)分類編目,加以較系統(tǒng)地歸納梳理。慢慢地,這份學(xué)習(xí)筆記居然有了上萬(wàn)字的規(guī)模,成為了一份很好的Boost備忘參考,在日常的開(kāi)發(fā)工作中給了我很大的幫助——就像《設(shè)計(jì)模式》一書中所說(shuō)的那樣,捕獲了很多使用Boost解決問(wèn)題的實(shí)踐經(jīng)驗(yàn),避免了重復(fù)發(fā)現(xiàn)。不過(guò),這份資料一直是僅限于我個(gè)人使用,屬于“自?shī)首詷?lè)”的作品,從未示人。時(shí)間一晃到了2010年1月份的某天夜里,不知道是什么原因我忽然失眠了,躺在床上翻來(lái)覆去怎么也睡不著。突然,一個(gè)念頭闖入了腦海:把Boost開(kāi)發(fā)經(jīng)驗(yàn)整理出版吧,讓更多人能夠分享這些知識(shí),正所謂“獨(dú)樂(lè)樂(lè),與眾樂(lè)樂(lè),孰樂(lè)?”。這個(gè)大膽的想法的出現(xiàn)讓我那天的失眠又延長(zhǎng)了幾個(gè)小時(shí)——關(guān)于書的各種構(gòu)想在頭腦中“肆虐橫行”。隨后的幾天里我就把這個(gè)想法付諸行動(dòng)了,雖然以前也寫過(guò)并發(fā)表很多文章,也在網(wǎng)上印刷了幾本個(gè)人文集,但出版正式的書還是第一次。在把學(xué)習(xí)筆記進(jìn)一步整理完善,編寫出較完整的結(jié)構(gòu)和一個(gè)樣章后,我就開(kāi)始聯(lián)系出版社了。當(dāng)初并沒(méi)有多大的信心,畢竟我這個(gè)作者名不見(jiàn)經(jīng)傳,也沒(méi)有什么資歷、背景和名氣(而且還是個(gè)“網(wǎng)盲”,從未跟隨潮流開(kāi)個(gè)人博客)。很幸運(yùn),發(fā)出的第一個(gè)E-mail就是電子工業(yè)出版社,而且編輯也在第一時(shí)間回復(fù)了我,這才給了我以持續(xù)寫作完成全書的動(dòng)力。
內(nèi)容概要
Boost是一個(gè)功能強(qiáng)大、構(gòu)造精巧、跨平臺(tái)、開(kāi)源并且完全免費(fèi)的C++程序庫(kù),有著“C++‘準(zhǔn)’標(biāo)準(zhǔn)庫(kù)”的美譽(yù)?! ∷蒀++標(biāo)準(zhǔn)委員會(huì)部分成員所設(shè)立的Boost社區(qū)開(kāi)發(fā)并維護(hù),使用了許多現(xiàn)代C++編程技術(shù),內(nèi)容涵蓋字符串處理、正則表達(dá)式、容器與數(shù)據(jù)結(jié)構(gòu)、并發(fā)編程、函數(shù)式編程、泛型編程、設(shè)計(jì)模式實(shí)現(xiàn)等許多領(lǐng)域,極大地豐富了C++的功能和表現(xiàn)力,能夠使C++軟件開(kāi)發(fā)更加簡(jiǎn)潔、優(yōu)雅、靈活和高效?! 禕oost程序庫(kù)完全開(kāi)發(fā)指南:深入C++"準(zhǔn)"標(biāo)準(zhǔn)庫(kù)》基于Boost1.42版,介紹了其中的所有99個(gè)庫(kù),并且詳細(xì)深入地講解了其中數(shù)十個(gè)庫(kù),同時(shí)實(shí)現(xiàn)了若干頗具實(shí)用價(jià)值的工具類和函數(shù),可幫助讀者迅速理解掌握Boost的用法以及在實(shí)際應(yīng)用開(kāi)發(fā)工作中?! 禕oost程序庫(kù)完全開(kāi)發(fā)指南:深入C++"準(zhǔn)"標(biāo)準(zhǔn)庫(kù)》內(nèi)容豐富、結(jié)構(gòu)嚴(yán)謹(jǐn)、詳略得當(dāng)、講解透徹,帶領(lǐng)讀者領(lǐng)略了C++的最新前沿技術(shù),相信會(huì)是每位C++程序員的必備工具書。
作者簡(jiǎn)介
羅劍鋒(網(wǎng)名Chrono),1996年就讀于東北財(cái)經(jīng)大學(xué),1997年開(kāi)始接觸C/C++。1998年參加全國(guó)計(jì)算機(jī)等級(jí)考試,獲高級(jí)程序員資質(zhì)。2003年畢業(yè)于北京理工大學(xué),獲計(jì)算機(jī)專業(yè)碩士學(xué)位。目前供職于某部委下屬軟件公司,任項(xiàng)目經(jīng)理,主要研究方向?yàn)镃/C++、設(shè)計(jì)模式、密碼學(xué)、數(shù)據(jù)庫(kù)、嵌入式系統(tǒng)開(kāi)發(fā)。業(yè)余愛(ài)好是閱讀、欣賞音樂(lè)和旅游。
書籍目錄
第0章 導(dǎo)讀 10.1 關(guān)于本書 10.2 讀者對(duì)象 10.3 本書的術(shù)語(yǔ)與風(fēng)格 20.4 本書的結(jié)構(gòu) 30.5 如何閱讀本書 5第1章 Boost程序庫(kù)總論 71.1 關(guān)于Boost 71.1.1 什么是Boost 71.1.2 安裝Boost 81.1.3 使用Boost 81.2 關(guān)于STLport 91.2.1 什么是STLport 91.2.2 安裝STLport 101.2.3 使用STLport 101.3 開(kāi)發(fā)環(huán)境 101.3.1 STLport的編譯方法 111.3.2 Boost的編譯方法 111.3.3 VisualStudio 2005環(huán)境設(shè)置 15第2章 時(shí)間與日期 172.1 timer庫(kù)概述 172.2 timer 172.2.1 用法 182.2.2 類摘要 182.2.3 使用建議 192.3 progress_timer 202.3.1 用法 202.3.2 類摘要 212.3.3 擴(kuò)展計(jì)時(shí)精度 212.4 progress_display 232.4.1 類摘要 242.4.2 用法 252.4.3 注意事項(xiàng) 262.5 date_time庫(kù)概述 272.5.1 編譯date_time庫(kù) 272.5.2 date_time庫(kù)的基本概念 282.6 處理日期 292.6.1 日期 292.6.2 創(chuàng)建日期對(duì)象 302.6.3 訪問(wèn)日期 312.6.4 日期的輸出 322.6.5 與tm結(jié)構(gòu)的轉(zhuǎn)換 332.6.6 日期長(zhǎng)度 342.6.7 日期運(yùn)算 352.6.8 日期區(qū)間 362.6.9 日期區(qū)間運(yùn)算 382.6.10 日期迭代器 392.6.11 其他功能 402.6.12 綜合運(yùn)用 402.7 處理時(shí)間 432.7.1 時(shí)間長(zhǎng)度 432.7.2 操作時(shí)間長(zhǎng)度 452.7.3 時(shí)間長(zhǎng)度的精確度 462.7.4 時(shí)間點(diǎn) 482.7.5 創(chuàng)建時(shí)間點(diǎn)對(duì)象 482.7.6 操作時(shí)間點(diǎn)對(duì)象 492.7.7 與tm、time_t等結(jié)構(gòu)的轉(zhuǎn)換 502.7.8 時(shí)間區(qū)間 512.7.9 時(shí)間迭代器 512.7.10 綜合運(yùn)用 522.8 date_time庫(kù)的高級(jí)議題 542.8.1 編譯配置宏 552.8.2 格式化時(shí)間 552.8.3 本地時(shí)間 562.8.4 序列化 582.9 總結(jié) 58第3章 內(nèi)存管理 613.1 smart_ptr庫(kù)概述 613.1.1 RAII機(jī)制 613.1.2 智能指針 623.2 scoped_ptr 633.2.1 類摘要 633.2.2 操作函數(shù) 643.2.3 用法 653.2.4 與auto_ptr的區(qū)別 663.3 scoped_array 673.3.1 類摘要 673.3.2 用法 683.3.3 使用建議 693.4 shared_ptr 693.4.1 類摘要 703.4.2 操作函數(shù) 703.4.3 用法 723.4.4 工廠函數(shù) 743.4.5 應(yīng)用于標(biāo)準(zhǔn)容器 753.4.6 應(yīng)用于橋接模式 763.4.7 應(yīng)用于工廠模式 773.4.8 定制刪除器 783.4.9 高級(jí)議題 803.5 shared_array 813.5.1 類摘要 813.5.2 用法 823.6 weak_ptr 823.6.1 類摘要 823.6.2 用法 833.6.3 獲得this的shared_ptr 843.7 intrusive_ptr 853.8 pool庫(kù)概述 853.9 pool 853.9.1 類摘要 863.9.2 操作函數(shù) 863.9.3 用法 873.10 object_pool 883.10.1 類摘要 883.10.2 操作函數(shù) 883.10.3 用法 893.10.4 使用更多的構(gòu)造參數(shù) 903.11 singleton_pool 913.11.1 類摘要 913.11.2 用法 923.12 pool_alloc 933.13 總結(jié) 93第4章 實(shí)用工具 954.1 noncopyable 954.1.1 原理 964.1.2 用法 964.2 typeof 974.2.1 動(dòng)機(jī) 974.2.2 用法 994.2.3 向typeof庫(kù)注冊(cè)自定義類 1004.2.4 高級(jí)議題 1014.3 optional 1014.3.1 “無(wú)意義”的值 1014.3.2 類摘要 1024.3.3 操作函數(shù) 1024.3.4 用法 1034.3.5 工廠函數(shù) 1044.3.6 高級(jí)議題 1054.4 assign 1064.4.1 使用操作符+=向容器增加元素 1064.4.2 使用操作符()向容器增加元素 1074.4.3 初始化容器元素 1084.4.4 減少重復(fù)輸入 1104.4.5 與非標(biāo)準(zhǔn)容器工作 1114.4.6 高級(jí)用法 1124.5 swap 1134.5.1 原理 1134.5.2 交換數(shù)組 1144.5.3 特化std::swap 1144.5.4 特化ADL可找到的swap 1154.5.5 使用建議 1164.6 singleton 1164.6.1 boost.pool的單件實(shí)現(xiàn) 1174.6.2 boost.serialzation的單件實(shí)現(xiàn) 1194.7 tribool 1204.7.1 類摘要 1214.7.2 用法 1224.7.3 為第三態(tài)更名 1224.7.4 輸入輸出 1234.7.5 與optional的區(qū)別 1244.8 operators 1254.8.1 基本運(yùn)算概念 1264.8.2 算術(shù)操作符的用法 1274.8.3 基類鏈 1294.8.4 復(fù)合運(yùn)算概念 1304.8.5 相等與等價(jià) 1314.8.6 解引用操作符 1334.8.7 下標(biāo)操作符 1344.8.8 高級(jí)議題 1354.9 exception 1364.9.1 標(biāo)準(zhǔn)庫(kù)中的異常 1374.9.2 類摘要 1374.9.3 向異常傳遞信息 1394.9.4 更進(jìn)一步的用法 1404.9.5 包裝標(biāo)準(zhǔn)異常 1424.9.6 使用函數(shù)拋出異常 1434.9.7 獲得更多的調(diào)試信息 1444.9.8 高級(jí)議題 1454.10 uuid 1464.10.1 類摘要 1474.10.2 用法 1484.10.3 生成器 1504.10.4 增強(qiáng)的uuid類 1524.10.5 與字符串的轉(zhuǎn)換 1534.10.6 SHA1摘要算法 1544.11 config 1554.11.1 BOOST_STRINGIZE 1554.11.2 BOOST_STATIC_CONSTANT 1554.11.3 禁止編譯器警告 1564.11.4 其他工具 1574.12 utility 1574.12.1 BOOST_BINARY 1574.12.2 BOOST_CURRENT_FUNCTION 1584.13 總結(jié) 160第5章 字符串與文本處理 1635.1 lexical_cast 1635.1.1 用法 1645.1.2 異常bad_lexical_cast 1655.1.3 對(duì)轉(zhuǎn)換對(duì)象的要求 1665.1.4 應(yīng)用于自己的類 1665.2 format 1675.2.1 簡(jiǎn)單的例子 1685.2.2 輸入操作符% 1695.2.3 類摘要 1715.2.4 格式化語(yǔ)法 1725.2.5 format的性能 1735.2.6 高級(jí)用法 1735.3 string_algo 1755.3.1 簡(jiǎn)單的例子 1755.3.2 string_algo概述 1765.3.3 大小寫轉(zhuǎn)換 1775.3.4 判斷式(算法) 1785.3.5 判斷式(函數(shù)對(duì)象) 1795.3.6 分類 1805.3.7 修剪 1815.3.8 查找 1825.3.9 替換與刪除 1845.3.10 分割 1865.3.11 合并 1875.3.12 查找(分割)迭代器 1885.4 tokenizer 1895.4.1 類摘要 1905.4.2 用法 1905.4.3 分詞函數(shù)對(duì)象 1915.4.4 char_separator 1925.4.5 escaped_list_separator 1935.4.6 offset_separator 1935.4.7 tokenizer庫(kù)的缺陷 1955.5 xpressive 1965.5.1 兩種使用方式 1975.5.2 正則表達(dá)式語(yǔ)法簡(jiǎn)介 1975.5.3 類摘要 1995.5.4 匹配 2015.5.5 查找 2035.5.6 替換 2045.5.7 迭代 2065.5.8 分詞 2075.5.9 與regex的區(qū)別 2085.5.10 高級(jí)議題 2095.6 總結(jié) 211第6章 正確性與測(cè)試 2136.1 assert 2136.1.1 基本用法 2136.1.2 禁用斷言 2146.1.3 擴(kuò)展用法 2156.1.4 BOOST_VERIFY 2166.2 static_assert 2176.2.1 用法 2176.2.2 使用建議 2186.3 test 2196.3.1 編譯test庫(kù) 2196.3.2 最小化的測(cè)試套件 2206.3.3 單元測(cè)試框架簡(jiǎn)介 2216.3.4 測(cè)試斷言 2226.3.5 測(cè)試用例與套件 2236.3.6 測(cè)試實(shí)例 2246.3.7 測(cè)試夾具 2266.3.8 測(cè)試日志 2286.3.9 運(yùn)行參數(shù) 2296.3.10 函數(shù)執(zhí)行監(jiān)視器 2306.3.11 程序執(zhí)行監(jiān)視器 2336.3.12 高級(jí)議題 2346.4 總結(jié) 236第7章 容器與數(shù)據(jù)結(jié)構(gòu) 2397.1 array 2397.1.1 類摘要 2407.1.2 操作函數(shù) 2407.1.3 用法 2417.1.4 能力限制 2427.1.5 array的初始化 2427.1.6 實(shí)現(xiàn)ref_array 2437.1.7 ref_array的用法 2447.2 dynamic_bitset 2457.2.1 類摘要 2457.2.2 創(chuàng)建與賦值 2477.2.3 容器操作 2487.2.4 位運(yùn)算與比較運(yùn)算 2497.2.5 訪問(wèn)元素 2497.2.6 類型轉(zhuǎn)換 2517.2.7 集合操作 2517.2.8 綜合運(yùn)用 2527.3 unordered 2537.3.1 散列集合簡(jiǎn)介 2547.3.2 散列集合的用法 2557.3.3 散列映射簡(jiǎn)介 2567.3.4 散列映射的用法 2567.3.5 性能比較 2577.3.6 高級(jí)議題 2597.4 bimap 2617.4.1 類摘要 2617.4.2 基本用法 2627.4.3 值的集合類型 2637.4.4 集合類型的用法 2647.4.5 使用標(biāo)簽類型 2667.4.6 使用assign庫(kù) 2677.4.7 查找與替換 2687.4.8 投射 2697.4.9 高級(jí)議題 2707.5 circular_buffer 2717.5.1 類摘要 2717.5.2 用法 2727.5.3 環(huán)型緩沖區(qū) 2737.5.4 空間優(yōu)化型緩沖區(qū) 2757.6 tuple 2757.6.1 最簡(jiǎn)單的tuple:pair 2767.6.2 類摘要 2767.6.3 創(chuàng)建與賦值 2777.6.4 訪問(wèn)元素 2787.6.5 比較操作 2797.6.6 輸入輸出 2807.6.7 連結(jié)變量 2817.6.8 應(yīng)用于assign庫(kù) 2827.6.9 應(yīng)用于exception庫(kù) 2827.6.10 內(nèi)部結(jié)構(gòu) 2827.6.11 使用訪問(wèn)者模式 2847.6.12 高級(jí)議題 2857.7 any 2877.7.1 類摘要 2877.7.2 訪問(wèn)元素 2887.7.3 用法 2897.7.4 簡(jiǎn)化的操作函數(shù) 2907.7.5 保存指針 2917.7.6 輸出 2927.7.7 應(yīng)用于容器 2947.8 variant 2947.8.1 類摘要 2947.8.2 訪問(wèn)元素 2957.8.3 用法 2967.8.4 訪問(wèn)器 2977.8.5 與any的區(qū)別 3007.8.6 高級(jí)議題 3007.9 multi_array 3027.9.1 類摘要 3027.9.2 用法 3047.9.3 多維數(shù)組生成器 3067.9.4 改變形狀和大小 3077.9.5 創(chuàng)建子視圖 3087.9.6 適配普通數(shù)組 3107.9.7 高級(jí)議題 3117.10 property_tree 3147.10.1 類摘要 3157.10.2 讀取配置信息 3167.10.3 寫入配置信息 3187.10.4 更多用法 3197.10.5 XML數(shù)據(jù)格式 3207.10.6 其他數(shù)據(jù)格式 3217.10.7 高級(jí)議題 3237.11 總結(jié) 324第8章 算法 3278.1 foreach 3278.1.1 用法 3288.1.2 詳細(xì)解說(shuō) 3298.1.3 使用typeof 3298.1.4 更優(yōu)雅的名字 3308.1.5 支持的序列類型 3318.1.6 一個(gè)小問(wèn)題 3328.2 minmax 3328.2.1 用法 3338.2.2 使用tuples::tie 3348.3 minmax_element 3348.3.1 用法 3348.3.2 其他函數(shù)的用法 3358.4 總結(jié) 336第9章 數(shù)學(xué)與數(shù)字 337第10章 操作系統(tǒng)相關(guān) 371第11章 函數(shù)與回調(diào) 419第12章 并發(fā)編程 467第13章 編程語(yǔ)言支持 513第14章 其他Boost組件 537第15章 Boost與設(shè)計(jì)模式 547第16章 結(jié)束語(yǔ) 559附錄A 推薦書目 565附錄B 網(wǎng)絡(luò)資源 567附錄C C++標(biāo)準(zhǔn)簡(jiǎn)述 569附錄D STL簡(jiǎn)述 571附錄E ref_array實(shí)現(xiàn)代碼 573
章節(jié)摘錄
插圖:
編輯推薦
《Boost程序庫(kù)完全開(kāi)發(fā)指南:深入C++"準(zhǔn)"標(biāo)準(zhǔn)庫(kù)》:Boost是一個(gè)功能強(qiáng)大、構(gòu)造精巧、跨平臺(tái)、開(kāi)源并且完全免費(fèi)的C++程序庫(kù),有著“C++‘準(zhǔn)’標(biāo)準(zhǔn)庫(kù)”的美譽(yù),是每位C++程序員的必備工具?!禕oost程序庫(kù)完全開(kāi)發(fā)指南:深入C++"準(zhǔn)"標(biāo)準(zhǔn)庫(kù)》基于Boost1.42版,介紹了其中所有的99個(gè)庫(kù),并且詳細(xì)深入地講解了其中數(shù)十個(gè)庫(kù),同時(shí)實(shí)現(xiàn)了若干頗具實(shí)用價(jià)值的工具類和函數(shù),可幫助讀者迅速地理解掌握Boost的用法并用于實(shí)際的開(kāi)發(fā)工作中。
圖書封面
圖書標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載
Boost程序庫(kù)完全開(kāi)發(fā)指南 PDF格式下載