• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            大龍的博客

            常用鏈接

            統(tǒng)計(jì)

            最新評(píng)論

            C++ Boost庫(kù)簡(jiǎn)介

            C++ Boost庫(kù)簡(jiǎn)介

            ????boost是一個(gè)準(zhǔn)標(biāo)準(zhǔn)庫(kù),相當(dāng)于STL的延續(xù)和擴(kuò)充,它的設(shè)計(jì)理念和STL比較接近,都是利用泛型讓復(fù)用達(dá)到最大化。不過(guò)對(duì)比STL,boost更加實(shí)用。STL集中在算法部分,而boost包含了不少工具類(lèi),可以完成比較具體的工作。

            ????boost主要包含一下幾個(gè)大類(lèi):字符串及文本處理、容器、迭代子(Iterator)、算法、函數(shù)對(duì)象和高階編程、泛型編程、模板元編程、預(yù)處理元編程、并發(fā)編程、數(shù)學(xué)相關(guān)、糾錯(cuò)和測(cè)試、數(shù)據(jù)結(jié)構(gòu)、輸入/輸出、跨語(yǔ)言支持、內(nèi)存相關(guān)、語(yǔ)法分析、雜項(xiàng)。 有一些庫(kù)是跨類(lèi)別包含的,就是既屬于這個(gè)類(lèi)別又屬于那個(gè)類(lèi)別。

            ????在文本處理部分,conversion/lexcial_cast類(lèi)用于“用C++”的方法實(shí)現(xiàn)數(shù)字類(lèi)型和字符串之間的轉(zhuǎn)換。 主要是替代C標(biāo)準(zhǔn)庫(kù)中的 atoi、 itoa之類(lèi)的函數(shù)。當(dāng)然其中一個(gè)最大的好處就是支持泛型了。

            ????format庫(kù)提供了對(duì)流的“printf-like”功能。printf里使用%d、%s等等的參數(shù)做替換的方法在很多情況下還是非常方便的,STL的iostream則缺乏這樣的功能。format為stream增加了這個(gè)功能,并且功能比原始的printf更強(qiáng)。

            ????regex,這個(gè)不多說(shuō)了,正則表達(dá)式庫(kù)。如果需要做字符串分析的人就會(huì)理解正則表達(dá)式有多么有用了。

            ????spirit,這個(gè)是做LL分析的框架,可以根據(jù)EBNF規(guī)則對(duì)文件進(jìn)行分析。(不要告訴我不知道什么是EBNF)。做編譯器的可能會(huì)用到。一般人不太用的到。

            ????tokenizer庫(kù)。我以前經(jīng)常在CSDN上看到有人問(wèn)怎么把一個(gè)字符串按逗號(hào)分割成字符串?dāng)?shù)組。也許有些人很羨慕VB的split函數(shù)。現(xiàn)在,boost的tokenizer也有相同的功能了,如果我沒(méi)記錯(cuò)的話,這個(gè)tokenizer還支持正則表達(dá)式,是不是很爽?

            ????array: 提供了常量大小的數(shù)組的一個(gè)包裝,喜歡用數(shù)組但是苦惱數(shù)組定位、確定數(shù)組大小等功能的人這下開(kāi)心了。

            ????dynamic_bitset,動(dòng)態(tài)分配大小的bitset,我們知道STL里有個(gè)bitset,為位運(yùn)算提供了不少方便。可惜它的大小需要在編譯期指定。現(xiàn)在好了,運(yùn)行期動(dòng)態(tài)分配大小的bitset來(lái)了。

            ????graph。提供了圖的容器和相關(guān)算法。我還沒(méi)有在程序中用到過(guò)圖,需要用的人可以看看。

            ????multi_array提供了對(duì)多維數(shù)組的封裝,應(yīng)該還是比較有用的。

            ????并發(fā)編程里只有一個(gè)庫(kù),thread,提供了一個(gè)可移植的線程庫(kù),不過(guò)在Windows平臺(tái)上我感覺(jué)用處不大。因?yàn)樗腔赑osix線程的,在Windows里對(duì)Posix的支持不是很好。

            ????接下來(lái)的 數(shù)學(xué)和數(shù)值 類(lèi)里,包含了很多數(shù)值處理方面的類(lèi)庫(kù),數(shù)學(xué)類(lèi)我也不太熟,不過(guò)這里有幾個(gè)類(lèi)還是很有用的,比如rational分?jǐn)?shù)類(lèi),random隨機(jī)數(shù)類(lèi),等等。

            ????static_assert,提供了編譯器的assert功能。

            ????test庫(kù),一個(gè)單元測(cè)試框架,非常不錯(cuò)。

            ????concept_check提供了泛型編程時(shí),對(duì)泛型量的一點(diǎn)檢查,不是很完善,不過(guò)比沒(méi)有好。

            ????數(shù)據(jù)類(lèi)型類(lèi)any,一個(gè)安全的可以包含不同對(duì)象的類(lèi)。把它作為容器的元素類(lèi)型,那么這個(gè)容器就可以包含不同類(lèi)型的元素。比用void *要安全。

            ????compressed_pair,跟STL里的pair差不多。不過(guò)對(duì)空元素做了優(yōu)化。

            ????tuple,呵呵,也許是某些人夢(mèng)寐以求的東西。可以讓函數(shù)返回多個(gè)值。

            ????跨語(yǔ)言支持:python,呵呵,好東東啊,可以將C++的類(lèi)和函數(shù)映射給python使用。以下為幾個(gè)CSDN上的關(guān)于boost.python的中文資料:http://dev.csdn.net/article/19/19828.shtm,http://dev.csdn.net/article/19/19829.shtm,http://dev.csdn.net/article/19/19830.shtm,http://dev.csdn.net/article/19/19831.shtm

            ????pool:內(nèi)存池,呵呵,不用害怕頻繁分配釋放內(nèi)存導(dǎo)致內(nèi)存碎片,也不用自己辛辛苦苦自己實(shí)現(xiàn)了。

            ????smart_ptr:智能指針,這下不用擔(dān)心內(nèi)存泄漏的問(wèn)題了吧。不過(guò),C++里的智能指針都還不是十全十美的,用的時(shí)候小心點(diǎn)了,不要做太技巧性的操作了。

            ????date_time,這個(gè)是平臺(tái)、類(lèi)庫(kù)無(wú)關(guān)的實(shí)現(xiàn),如果程序需要跨平臺(tái),可以考慮用這個(gè)。

            ???? timer,提供了一個(gè)計(jì)時(shí)器,雖然不是Windows里那種基于消息的計(jì)時(shí)器,不過(guò)據(jù)說(shuō)可以用來(lái)測(cè)量語(yǔ)句執(zhí)行時(shí)間。

            ???? uitlity里提供了一個(gè)noncopyable類(lèi),可以實(shí)現(xiàn)“無(wú)法復(fù)制”的類(lèi)。很多情況下,我們需要避免一個(gè)類(lèi)被復(fù)制,比如代表文件句柄的類(lèi),文件句柄如果被兩個(gè)實(shí)例共享,操作上會(huì)有很多問(wèn)題,而且語(yǔ)義上也說(shuō)不過(guò)去。一般的避免實(shí)例復(fù)制的方法是把拷貝構(gòu)造和operator=私有化,現(xiàn)在只要繼承一下這個(gè)類(lèi)就可以了,清晰了很多。

            ???? value_initialized:數(shù)值初始化,可以保證聲明的對(duì)象都被明確的初始化,不過(guò)這個(gè)真的實(shí)用嗎?似乎寫(xiě)這個(gè)比直接寫(xiě)初始化還累。呵呵,仁者見(jiàn)仁了。

            ???? 這里面除了regex、python和test需要編譯出庫(kù)才能用,其他的大部分都可以直接源代碼應(yīng)用,比較方便。其實(shí)這些庫(kù)使用都不難。最主要的原因是有些庫(kù)的使用需要有相關(guān)的背景知識(shí),比如元編程、STL、泛型編程等等。

            轉(zhuǎn)載自“令狐蟲(chóng)的無(wú)聊空間”

            posted on 2006-11-23 14:49 大龍 閱讀(280) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            一本久道久久综合狠狠躁AV| 四虎国产精品免费久久久| 国产精品一区二区久久精品无码 | 久久人妻少妇嫩草AV无码蜜桃| 午夜精品久久久久久久| 久久亚洲AV无码精品色午夜麻豆| 日韩AV毛片精品久久久| 久久婷婷五月综合97色直播| 久久成人精品| 亚洲va久久久久| 亚洲欧洲日产国码无码久久99| 99蜜桃臀久久久欧美精品网站| 国产偷久久久精品专区 | 亚洲中文字幕久久精品无码APP | 色99久久久久高潮综合影院| 日韩中文久久| 精品综合久久久久久97| 久久精品成人欧美大片| 久久精品午夜一区二区福利 | 激情综合色综合久久综合| 久久精品国产一区二区三区不卡 | 99精品国产99久久久久久97| 蜜臀av性久久久久蜜臀aⅴ| 久久精品视频免费| 久久亚洲高清综合| 国产成人无码精品久久久性色| 久久亚洲精品国产精品| 久久国产精品波多野结衣AV| 久久久黄色大片| 国产精品一久久香蕉国产线看 | 72种姿势欧美久久久久大黄蕉| 久久se精品一区精品二区| 午夜精品久久久久久影视777| 色88久久久久高潮综合影院| 国产精品成人精品久久久| 亚洲精品乱码久久久久久中文字幕| 久久国产精品99久久久久久老狼 | 久久国产视频99电影| 国产三级久久久精品麻豆三级| 久久影视国产亚洲| 国产91久久精品一区二区|