出版時(shí)間:2012-5 出版社:電子工業(yè) 作者:羅劍鋒 頁數(shù):578
Tag標(biāo)簽:無
內(nèi)容概要
Boost是一個(gè)功能強(qiáng)大、構(gòu)造精巧、跨平臺(tái)、開源并且完全免費(fèi)的C++程序庫,有著“C++‘準(zhǔn)’標(biāo)準(zhǔn)庫”的美譽(yù)?! oost由C++標(biāo)準(zhǔn)委員會(huì)部分成員所設(shè)立的Boost社區(qū)開發(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++軟件開發(fā)更加簡(jiǎn)捷、優(yōu)雅、靈活和高效?! 禕oost程序庫完全開發(fā)指南:深入C++“準(zhǔn)”標(biāo)準(zhǔn)庫(修訂版)》基于Boost1.42版,介紹了其中的所有99個(gè)庫,并且詳細(xì)深入地講解了其中數(shù)十個(gè)庫,同時(shí)實(shí)現(xiàn)了若干頗具實(shí)用價(jià)值的工具類和函數(shù),可幫助讀者迅速地理解掌握Boost的用法及其在實(shí)際開發(fā)工作中的應(yīng)用。 《Boost程序庫完全開發(fā)指南:深入C++“準(zhǔn)”標(biāo)準(zhǔn)庫(修訂版)》內(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年開始接觸C/C++。1998年參加全國計(jì)算機(jī)等級(jí)考試,獲高級(jí)程序員資質(zhì)。2003年畢業(yè)于北京理工大學(xué),獲計(jì)算機(jī)專業(yè)碩士學(xué)位。目前供職于某部委下屬軟件公司,任項(xiàng)目經(jīng)理,主要研究方向?yàn)镃/C++、設(shè)計(jì)模式、密碼學(xué)、數(shù)據(jù)庫、嵌入式系統(tǒng)開發(fā)。業(yè)余愛好是閱讀、欣賞音樂和旅游。
書籍目錄
第0章 導(dǎo)讀 0.1 關(guān)于本書 0.2 讀者對(duì)象 0.3 本書的術(shù)語與風(fēng)格 0.4 本書的結(jié)構(gòu) 0.5 如何閱讀本書 第1章 Boost程序庫總論 1.1 關(guān)于Boost 1.1.1 什么是Boost 1.1.2 安裝Boost 1.1.3 使用Boost 1.2 關(guān)于STLport 1.2.1 什么是STLport 1.2.2 安裝STLport 1.2.3 使用STLport 1.3 開發(fā)環(huán)境 1.3.1 STLport的編譯方法 1.3.2 Boost的編譯方法 1.3.3 Visual Studio 2005環(huán)境設(shè)置 第2章 時(shí)間與日期 2.1 timer庫概述 2.2 timer 2.2.1 用法 2.2.2 類摘要 2.2.3 使用建議 2.3 progress_timer 2.3.1 用法 2.3.2 類摘要 2.3.3 擴(kuò)展計(jì)時(shí)精度 2.4 progress_display 2.4.1 類摘要 2.4.2 用法 2.4.3 注意事項(xiàng) 2.5 date_time庫概述 2.5.1 編譯date_time庫 2.5.2 date_time庫的基本概念 2.6 處理日期 2.6.1 日期 2.6.2 創(chuàng)建日期對(duì)象 2.6.3 訪問日期 2.6.4 日期的輸出 2.6.5 與tm結(jié)構(gòu)的轉(zhuǎn)換 2.6.6 日期長度 2.6.7 日期運(yùn)算 2.6.8 日期區(qū)間 2.6.9 日期區(qū)間運(yùn)算 2.6.10 日期迭代器 2.6.11 其他功能 2.6.12 綜合運(yùn)用 2.7 處理時(shí)間 2.7.1 時(shí)間長度 2.7.2 操作時(shí)間長度 2.7.3 時(shí)間長度的精確度 2.7.4 時(shí)間點(diǎn) 2.7.5 創(chuàng)建時(shí)間點(diǎn)對(duì)象 2.7.6 操作時(shí)間點(diǎn)對(duì)象 2.7.7 與tm、time_t等結(jié)構(gòu)的轉(zhuǎn)換 2.7.8 時(shí)間區(qū)間 2.7.9 時(shí)間迭代器 2.7.10 綜合運(yùn)用 2.8 date_time庫的高級(jí)議題 2.8.1 編譯配置宏 2.8.2 格式化時(shí)間 2.8.3 本地時(shí)間 2.8.4 序列化 2.9 總結(jié) 第3章 內(nèi)存管理 3.1 smart_ptr庫概述 3.1.1 RAⅡ機(jī)制 3.1.2 智能指針 3.2 scoped_ptr 3.2.1 類摘要 3.2.2 操作函數(shù) 3.2.3 用法 3.2.4 與auto_ptr的區(qū)別 3.3 scoped_array 3.3.1 類摘要 3.3.2 用法 3.3.3 使用建議 3.4 shared_ptr 3.4.1 類摘要 3.4.2 操作函數(shù) 3.4.3 用法 3.4.4 工廠函數(shù) 3.4.5 應(yīng)用于標(biāo)準(zhǔn)容器 3.4.6 應(yīng)用于橋接模式 3.4.7 應(yīng)用于工廠模式 3.4.8 定制刪除器 3.4.9 高級(jí)議題 3.5 shared_array 3.5.1 類摘要 3.5.2 用法 3.6 weak_ptr 3.6.1 類摘要 3.6.2 用法 3.6.3 獲得this的shared_ptr 3.7 intrusive_ptr 3.8 pool庫概述 3.9 pool 3.9.1 類摘要 3.9.2 操作函數(shù) 3.9.3 用法 3.10 object_pool 3.10.1 類摘要 3.10.2 操作函數(shù) 3.10.3 用法 3.10.4 使用更多的構(gòu)造參數(shù) 3.11 slngleton_pool 3.11.1 類摘要 3.11.2 用法 3.12 pool_alloc 3.13 總結(jié) 第4章 實(shí)用工具 4.1 noncopyable 4.1.1 原理 4.1.2 用法 4.2 typeof 4.2.1 動(dòng)機(jī) 4.2.2 用法 4.2.3 向typeof庫注冊(cè)自定義類 4.2.4 高級(jí)議題 4.3 optional 4.3.1 “無意義”的值 4.3.2 類摘要 4.3.3 操作函數(shù) 4.3.4 用法 4.3.5 工廠函數(shù) 4.3.6 高級(jí)議題 4.4 assign 4.4.1 使用操作符+=向容器增加元素 4.4.2 使用操作符()向容器增加元素 4.4.3 初始化容器元素 4.4.4 減少重復(fù)輸入 4.4.5 與非標(biāo)準(zhǔn)容器工作 4.4.6 高級(jí)用法 4.5 swap 4.5.1 原理 4.5.2 交換數(shù)組 4.5.3 特化std::swap 4.5.4 特化ADL可找到的swap 4.5.5 使用建議 4.6 singleton 4.6.1 boost.pool的單件實(shí)現(xiàn) 4.6.2 boost.serialzation的單件實(shí)現(xiàn) 4.7 tribool 4.7.1 類摘要 4.7.2 用法 4.7.3 為第三態(tài)更名 4.7.4 輸入輸出 4.7.5 與optional的區(qū)別 4.8 operators 4.8.1 基本運(yùn)算概念 4.8.2 算術(shù)操作符的用法 4.8.3 基類鏈 4.8.4 復(fù)合運(yùn)算概念 4.8.5 相等與等價(jià) 4.8.6 解引用操作符 4.8.7 下標(biāo)操作符 4.8.8 高級(jí)議題 4.9 exception 4.9.1 標(biāo)準(zhǔn)庫中的異常 4.9.2 類摘要 4.9.3 向異常傳遞信息 4.9.4 更進(jìn)一步的用法 4.9.5 包裝標(biāo)準(zhǔn)異常 4.9.6 使用函數(shù)拋出異常 4.9.7 獲得更多的調(diào)試信息 4.9.8 高級(jí)議題 4.10 uuid 4.10.1 類摘要 4.10.2 用法 4.10.3 生成器 4.10.4 增強(qiáng)的uuid類 4.10.5 與字符串的轉(zhuǎn)換 4.10.6 SHA1摘要算法 4.11 config 4.11.1 BOOST_STRINGIZE 4.11.2 BOOST_STATIC_CONSTANT 4.11.3 禁止編譯器警告 4.11.4 其他工具 4.12 utility 4.12.1 BOOST_BINARY 4.12.2 BOOST_CURRENT_FUNCTION 4.13 總結(jié) 第5章 字符串與文本處理 5.1 lexical_cast 5.1.1 用法 5.1.2 異常bad_lexical_cast 5.1.3 對(duì)轉(zhuǎn)換對(duì)象的要求 5.1.4 應(yīng)用于自己的類 5.2 format 5.2.1 簡(jiǎn)單的例子 5.2.2 輸入操作符% 5.2.3 類摘要 5.2.4 格式化語法 5.2.5 format的性能 5.2.6 高級(jí)用法 5.3 string_algo 5.3.1 簡(jiǎn)單的例子 5.3.2 string_algo概述 5.3.3 大小寫轉(zhuǎn)換 5.3.4 判斷式(算法) 5.3.5 判斷式(函數(shù)對(duì)象) 5.3.6 分類 5.3.7 修剪 5.3.8 查找 5.3.9 替換與刪除 5.3.10 分割 5.3.11 合并 5.3.12 查找(分割)迭代器 5.4 tokenizer 5.4.1 類摘要 5.4.2 用法 5.4.3 分詞函數(shù)對(duì)象 5.4.4 char_separator 5.4.5 escaped_list_separator 5.4.6 offset_separator 5.4.7 tokenizer庫的缺陷 5.5 xpressive 5.5.1 兩種使用方式 5.5.2 正則表達(dá)式語法簡(jiǎn)介 5.5.3 類摘要 5.5.4 匹配 5.5.5 查找 5.5.6 替換 5.5.7 迭代 5.5.8 分詞 5.5.9 與regex的區(qū)別 5.5.10 高級(jí)議題 5.6 總結(jié) 第6章 正確性與測(cè)試 6.1 assert 6.1.1 基本用法 6.1.2 禁用斷言 6.1.3 擴(kuò)展用法 6.1.4 BOOST_VERIFY 6.2 static_assert 6.2.1 用法 6.2.2 使用建議 6.3 test 6.3.1 編譯test庫 6.3.2 最小化的測(cè)試套件 6.3.3 單元測(cè)試框架簡(jiǎn)介 6.3.4 測(cè)試斷言 6.3.5 測(cè)試用例與套件 6.3.6 測(cè)試實(shí)例 6.3.7 測(cè)試夾具 6.3.8 測(cè)試日志 6.3.9 運(yùn)行參數(shù) 6.3.10 函數(shù)執(zhí)行監(jiān)視器 6.3.11 程序執(zhí)行監(jiān)視器 6.3.12 高級(jí)議題 6.4 總結(jié) …… 第7章 容器與數(shù)據(jù)結(jié)構(gòu) 第8章 算法 第9章 數(shù)學(xué)與數(shù)字 第10章 操作系統(tǒng)相關(guān) 第11章 函數(shù)與回調(diào) 第12章 并發(fā)編程 第13章 編程語言支持 第14章 其他Boost組件 第15章 Boost與設(shè)計(jì)模式 第16章 結(jié)束語 附錄A 推薦書目 附錄B 網(wǎng)絡(luò)資源 附錄C C++標(biāo)準(zhǔn)簡(jiǎn)述 附錄D STL簡(jiǎn)述 附錄E ref_array實(shí)現(xiàn)代碼
章節(jié)摘錄
版權(quán)頁: 插圖: 1.1.2安裝Boost 從Boost網(wǎng)站(www.boost.org)下載boost_1_42_0.7z,一個(gè)約30MB左右大小的壓縮包文件,使用7Zip、WinRAR或者其他工具把該文件解壓縮到硬盤任意位置即可完成安裝,本書使用的路徑是:D:\boost。 注意:Boost1.42版解壓縮后約有200MB,請(qǐng)確保硬盤有足夠的空間。 1.1.3使用Boost Boost庫大部分組件(近90%)不需要編譯,直接包含頭文件即可。例如,如果要使用boost::tribool,只需要在C++源文件中添加如下include語句即可(當(dāng)然,接下來的代碼可能還需要using namespace boost;): #include //使用tribool庫 細(xì)心的讀者會(huì)發(fā)現(xiàn),Boost庫的頭文件與我們平常所用的頭文件(*.h)或c++標(biāo)準(zhǔn)庫頭文件(沒有后綴名)不同,這正是Boost的獨(dú)特之處。它把C++類的聲明和實(shí)現(xiàn)都放在了一個(gè)文件中,而不是分成兩個(gè)文件,也就是“.h+.cpp”,故文件的后綴是.hpp。 之所以這么做,當(dāng)然是有理由的。首先就是與普通的C頭文件(*.h)區(qū)分,另一個(gè)很重要的原因就是使Boost庫不需要預(yù)先編譯,直接引入程序員的工程即可編譯鏈接,方便了庫的使用。最后一個(gè)(無奈的)原因則是c++編譯器的限制,許多編譯器尚不支持c++標(biāo)準(zhǔn)提出的模板的分離編譯模式(export關(guān)鍵字),而Boost庫大量使用了模板,為了保持與各個(gè)編譯器的兼容,也不得不采用這種.hpp的頭文件形式。 剩下的共十五個(gè)庫(包括date_time、regex、program_options、test、thread、python等)必須編譯成靜態(tài)庫或者動(dòng)態(tài)庫后才能使用。不過有個(gè)好消息,其中有的庫不需要編譯也可以使用部分功能,而更好的消息是有的庫已經(jīng)有了不需要編譯的替代品(xpressive可替代regex、signals2可替代signals)。 在Windows下的VC編譯器支持自動(dòng)鏈接技術(shù),VC程序員可以不必為鏈接靜態(tài)庫或動(dòng)態(tài)庫、調(diào)試庫或發(fā)行庫等問題而費(fèi)心了。其他編譯器就沒有這樣幸運(yùn),必須在命令行上手工指定鏈接庫。 1.2關(guān)于STLport 本節(jié)將介紹C++標(biāo)準(zhǔn)庫的一個(gè)高效實(shí)現(xiàn)——STLport,它是本書的默認(rèn)標(biāo)準(zhǔn)庫配置,用于配合Boost程序庫工作。 1.2.1 什么是STLport STLport是一個(gè)完全符合C++98標(biāo)準(zhǔn)(及2003年修訂)的一個(gè)免費(fèi)的c++標(biāo)準(zhǔn)庫實(shí)現(xiàn)。它是由俄羅斯人Boris Fomitchev發(fā)起的開源項(xiàng)目,目的是基于著名的SGISTL開發(fā)一個(gè)可移植到各種平臺(tái)上使用的高效的C++標(biāo)準(zhǔn)庫。 STLport具有很多其他STL實(shí)現(xiàn)所沒有的優(yōu)點(diǎn)。首先是高度的可移植性,可以配合市面上幾乎所有的操作系統(tǒng)和編譯器使用,使開發(fā)的程序能夠在不同的編譯平臺(tái)上獲得一致的標(biāo)準(zhǔn)庫實(shí)現(xiàn)。其次是性能表現(xiàn)優(yōu)秀,其原始版本SGISTL就以高效而聞名,STLport在移植時(shí)也特別注重性能與效率,而且100%完全符合C++標(biāo)準(zhǔn)規(guī)范。第三個(gè)優(yōu)點(diǎn)是在標(biāo)準(zhǔn)之外增加了若干有用的擴(kuò)展,如rope(增強(qiáng)的字符串類)、slist(單鏈表數(shù)據(jù)結(jié)構(gòu))、hash_map(散列映射容器),以及支持線程安全。
編輯推薦
《Boost程序庫完全開發(fā)指南:深入C++"準(zhǔn)"標(biāo)準(zhǔn)庫(修訂版)》內(nèi)容豐富、結(jié)構(gòu)嚴(yán)謹(jǐn)、詳略得當(dāng)、講解透徹,帶領(lǐng)讀者領(lǐng)略了C++的最新前沿技術(shù),相信會(huì)是每位C++程序員的必備工具書。
圖書封面
圖書標(biāo)簽Tags
無
評(píng)論、評(píng)分、閱讀與下載