• <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>

            海邊沫沫

            相濡以沫,不如相忘于江湖
            posts - 9, comments - 113, trackbacks - 0, articles - 0
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            Scott Meyers在他的著名作品《Effective C++》中的第54條寫道:“Familiarize yourself with the standard library, including TR1“,同時(shí)在第55條寫道:“Familiarize yourself with Boost“,而這些條款的具體內(nèi)容中,又說(shuō)道C++0x 或許會(huì)覆蓋某些有趣的語(yǔ)言新特性,但大部分新技能將以標(biāo)準(zhǔn)程序庫(kù)的擴(kuò)充形式體現(xiàn),同時(shí)不斷強(qiáng)調(diào)Boost是一個(gè)高質(zhì)量、源代碼開放、跨平臺(tái)、兼容多個(gè)編譯器的程序庫(kù)。于是,我終于痛下決心,花大力氣來(lái)學(xué)習(xí)TR1和Boost。

            難道學(xué)習(xí)學(xué)習(xí)這幾個(gè)庫(kù)就真的這么難嗎?其實(shí)也不一定很難,但是也絕對(duì)不簡(jiǎn)單。我之所以搞得一副壯士一去不復(fù)返的樣子,那也是有原因的。其中的一個(gè)原因是有點(diǎn)被別人誤導(dǎo),當(dāng)我在網(wǎng)上搜索Boost相關(guān)的文章時(shí),經(jīng)常看到有人寫編譯Boost時(shí)遇到這樣那樣的錯(cuò)誤,以至于我以為裝個(gè)Boost比裝一個(gè)操作系統(tǒng)還難。事實(shí)上根本不是這樣,Boost的下載很簡(jiǎn)單,直接到http://www.boost.org就可以下載最新版本,用起來(lái)也不難,大部分的功能都只需要包含Boost的頭文件就可以了,只有極少數(shù)的庫(kù)庫(kù)要預(yù)編譯,即使是預(yù)編譯,也基本上沒(méi)啥門檻,網(wǎng)上寫的那些這樣那樣的問(wèn)題我也沒(méi)遇到,Boost的最新版本和我的Visual Studiao 2008就相處得很好,沒(méi)有編譯器兼容的問(wèn)題。我下載的是1.36.0版,下載下來(lái)是50多M,解壓縮后是200多M。打開控制臺(tái),輸入以下命令,就可以完成了Boost的預(yù)編譯:

            cd?D:\boost_1_36_0
            cd?tools\jam\src
            build?

            這里我是把Boost解壓在了D盤,運(yùn)行上面的命令后,等一下下,就有一個(gè)叫bjam.exe的工具被編譯出來(lái)了。然后,把這個(gè)工具考貝到D:\boost_1_36_0目錄下,以一定的命令行選項(xiàng)運(yùn)行該工具,就可以完成Boost的預(yù)編譯了。命令如下:

            cd?D:\boost_1_36_0
            copy?tools\jam\src\bin.ntx86\bjam.exe?.
            bjam??--build-dir
            = " D:\build-boost " ???--toolset = msvc??--build-type = complete?stage

            這些命令都是照著Boost的文檔抄的,沒(méi)什么技術(shù)含量,只要會(huì)用Windows的命令行誰(shuí)都可以搞定。以后使用Boost的時(shí)候,如果哪個(gè)庫(kù)需要連接編譯出來(lái)的二進(jìn)制庫(kù),只需要在Visual Studio 2008中指定項(xiàng)目的Additional Library Directories 為 D:\boost_1_36_0\stage\lib 就可以了。這個(gè)步驟文檔是寫得很清楚的。上面的代碼大家不要復(fù)制,因?yàn)檫@個(gè)博客系統(tǒng)的編輯器向里面加了一些空格,直接運(yùn)行有可能會(huì)出錯(cuò)的。

            至于TR1的獲得就更加簡(jiǎn)單了,Visual Studio 2008推出后不久,就推出了一個(gè)Feature Pack,是可以在微軟的官方網(wǎng)站上免費(fèi)下載的,其中就包含有TR1,同時(shí)還有MFC的新的界面庫(kù),MFC的fans們?cè)缇托Φ煤喜粩n嘴了。這個(gè)Feature Pack安裝以后就可以直接在Visual Studio 2008中使用TR1。不過(guò)文檔需要單獨(dú)下載。

            為什么說(shuō)絕對(duì)不簡(jiǎn)單呢?還是從Boost說(shuō)起:

            第一,Boost編譯時(shí)的時(shí)間占用和空間占用是絕對(duì)不簡(jiǎn)單的。我的臺(tái)式機(jī)是扣肉的CPU加4G的內(nèi)存,編譯了接近一個(gè)小時(shí),而我另外一臺(tái)筆記本,是賽揚(yáng)2.4G的CPU加1G的內(nèi)存,編譯到半夜我睡一覺(jué)醒來(lái)它才完成工作。而硬盤上怎么也得準(zhǔn)備7G的空間,編譯完成后,可以刪除D:\build-boost目錄,但是Boost庫(kù)占用的空間依然超過(guò)3G。

            第二,再來(lái)說(shuō)說(shuō)學(xué)習(xí)的時(shí)間占用。Boost的文檔是寫得相當(dāng)?shù)暮玫模任④浱峁┑腡R1文檔強(qiáng)太多了,每一個(gè)功能的文檔都會(huì)說(shuō)明它實(shí)現(xiàn)了什么功能,還會(huì)說(shuō)明以前的標(biāo)準(zhǔn)庫(kù)有哪些不足,這對(duì)我這樣超級(jí)期待C++ 0x的人來(lái)說(shuō),是莫大的福音。其次,Boost的文檔都寫得循序漸漸,讀起來(lái)才像文章,而微軟的東西,到處都是超級(jí)連接跳來(lái)跳去像意大利面條。但是,有好的文檔就一定學(xué)起來(lái)簡(jiǎn)單嗎?我初步數(shù)了一下,目前版本的Boost足足有80多個(gè)功能單元,如果我能夠每天讀一篇文檔的話,那也得接近三個(gè)月。就算是每天讀一篇文檔,也不是很現(xiàn)實(shí)的,因?yàn)橛袝r(shí)我還要抽時(shí)間打打牌。就算我不打牌,也有一些比較大的功能單元,如Boost.Regex、Boost.Python,它們的內(nèi)容都是足夠?qū)懸槐緯模屛乙惶熳x完也太有難度了吧。另外,很多庫(kù)需要專業(yè)知識(shí)做基礎(chǔ),當(dāng)我讀Accumulator和Math的文檔時(shí),可能還得說(shuō)“兄弟,把你的《統(tǒng)計(jì)學(xué)》和《高等數(shù)學(xué)》借給我翻翻”。

            微軟的TR1文檔我已經(jīng)學(xué)習(xí)得差不多了,只剩Random的文檔還沒(méi)有讀。而Boost的文檔,我今天讀了Accumulators。也許有人會(huì)奇怪,為什么不是Function、Bind、Lambda這些流行的呢,難道你是搞統(tǒng)計(jì)的?事實(shí)上不是這樣,因?yàn)槟切┝餍械臇|西已經(jīng)被大家寫爛了,讀中文的東西要方便得多,再就是按字母表排序Accumulators也是排在首位的嘛,我就按字母表慢慢讀下去算了。

            讀了Accumulators的文檔,當(dāng)然會(huì)有一些感想。首先就是感覺(jué)這的確是個(gè)好東西,設(shè)計(jì)得很優(yōu)雅,用起來(lái)也很方便,當(dāng)我熟悉了它的一些概念后,我就在想,以后搞統(tǒng)計(jì)分析方便了,不用再打開WPS表格對(duì)著課本編輯公式,不用再對(duì)著單元格輸入數(shù)據(jù),輸一個(gè)數(shù)還得按一下方向鍵才能跳到另外一個(gè)單元格。如果能用自己寫的C++來(lái)搞統(tǒng)計(jì)分析,只用把所有的數(shù)據(jù)輸入到記事本,用命令行的管道輸入就可以了,而且自己寫程序搞統(tǒng)計(jì)分析倍有面子,比使用Analysis有面子多了。但是理想和現(xiàn)實(shí)還是有距離的,當(dāng)我讀到它自帶的statistical accumulators有哪些時(shí),我又失望了,我總不能只用它來(lái)求最大值最小值和平均值吧,對(duì)于方差分析、卡方檢驗(yàn)、t檢驗(yàn)、u檢驗(yàn)它都沒(méi)有提供,當(dāng)然,它的設(shè)計(jì)是很有彈性的,我可以自己擴(kuò)充嘛。自己擴(kuò)充……也不是不行,不過(guò)那個(gè)難度……,我還不如用WPS表格來(lái)對(duì)著單元格來(lái)編輯公式呢。

            另外一個(gè)感想就是覺(jué)得Boost真的是有翻天覆地之能,顛覆了很多傳統(tǒng)的東西,比如我在看Accumulators文檔時(shí)看到的這樣的代碼:

            accumulator_set < ? double ,?features < ?my_tail_variate_tag? > ? > ?acc(?tag::tail < left > ::cache_size? = ? 2 ?);

            acc(?
            1.2 ,?covariate1? = ?? 12 ?);

            這時(shí),我的人肉編譯就不靈光了,以前哪里見過(guò)這樣在傳遞參數(shù)的時(shí)候還帶名字的呢?不過(guò),文檔中寫道,這叫命名參數(shù),是由Boost.Parameter庫(kù)實(shí)現(xiàn)的功能。真的是又長(zhǎng)見識(shí)了,看來(lái)Boost帶給C++0x的可能不僅僅只是庫(kù)上面的擴(kuò)充,對(duì)語(yǔ)言特性可能也會(huì)有一些影響,比如Concept,比如右值引用。這些東西我現(xiàn)在也講不清楚,但不管怎么說(shuō),Boost讓我覺(jué)得它真是一個(gè)挖不完的大金礦,我們肯定能在里面找到一些新奇而有趣的東西。

            兄弟們,加油,一起向Boost進(jìn)軍吧!

            Feedback

            # re: 痛下決心苦學(xué) TR1 和 Boost  回復(fù)  更多評(píng)論   

            2008-09-12 21:43 by 空明流轉(zhuǎn)
            boost文檔雖然不錯(cuò),但是windows的文檔絕對(duì)不差。

            # re: 痛下決心苦學(xué) TR1 和 Boost  回復(fù)  更多評(píng)論   

            2008-09-12 21:45 by 空明流轉(zhuǎn)
            boost的絕大多數(shù)庫(kù)的使用都是很方便的。少數(shù)幾個(gè)需要編譯的也就是稍微麻煩點(diǎn)。

            # re: 痛下決心苦學(xué) TR1 和 Boost  回復(fù)  更多評(píng)論   

            2008-09-12 22:08 by 海邊沫沫
            @空明流轉(zhuǎn)
            微軟的文檔我還讀得懂,不過(guò)它的Reference讀起來(lái)確實(shí)要費(fèi)點(diǎn)勁,Knowledge Base要好讀一些,不過(guò)Boost的更好。

            # re: 痛下決心苦學(xué) TR1 和 Boost  回復(fù)  更多評(píng)論   

            2008-09-13 01:46 by 矩陣操作
            TR1還可以,畢竟VC9帶了部分,boost就算了吧,太大了...........

            # re: 痛下決心苦學(xué) TR1 和 Boost  回復(fù)  更多評(píng)論   

            2008-09-13 12:51 by 做事須嚴(yán)謹(jǐn)
            cd D:\boost_1_36_0
            copy tools\jam\src\bin.ntx86\bjam.exe .
            bjam --build-dir = " D:\build-boost " --toolset = msvc --build-type = complete stage
            =============================
            上面的這些有些問(wèn)題,請(qǐng)做事情嚴(yán)謹(jǐn)點(diǎn)行不行?
            copy tools\jam\src\bin.ntx86\bjam.exe .這一行壓根就不存在這個(gè)目錄
            bjam --build-dir = " D:\build-boost " --toolset = msvc --build-type = complete stage 根本執(zhí)行就錯(cuò)了," D:\build-boost " 為什么前后有空格?然后還有那么多莫名其妙的空格

            你不是說(shuō)抄來(lái)的,怎么抄都抄成這樣了?
            把那些莫名其妙的空格去掉后,就可以執(zhí)行了。
            如果你不能確定你寫的是正確的,就不要發(fā)出來(lái),誤導(dǎo)別人了。

            # re: 痛下決心苦學(xué) TR1 和 Boost  回復(fù)  更多評(píng)論   

            2008-09-13 18:01 by 海邊沫沫
            樓上的,我早就說(shuō)了叫你不要復(fù)制嘛,這些空格是該博客系統(tǒng)自己添加的。

            至于你說(shuō)不存在這個(gè)目錄,那就冤枉我了,請(qǐng)看下面截圖:

            # re: 痛下決心苦學(xué) TR1 和 Boost  回復(fù)  更多評(píng)論   

            2008-09-24 23:46 by egmkang
            Boost庫(kù)感覺(jué)還是有一些暴力,太大了.

            # re: 痛下決心苦學(xué) TR1 和 Boost  回復(fù)  更多評(píng)論   

            2008-12-14 12:48 by cxh
            這個(gè)東西關(guān)鍵是學(xué)習(xí)了以后,能夠在自己開發(fā)的項(xiàng)目中使用才是硬道理。如果這些東西在項(xiàng)目上使用不上,也就是花瓶而已。
            久久久中文字幕日本| 久久精品国产99国产电影网 | 一本一本久久A久久综合精品| 国产69精品久久久久99| 99久久亚洲综合精品成人| 色综合久久综精品| 久久电影网| 色8激情欧美成人久久综合电| 久久综合日本熟妇| 久久精品免费一区二区| 中文字幕久久精品无码| 99久久99久久久精品齐齐 | 久久ww精品w免费人成| 久久超碰97人人做人人爱| 亚洲国产精品久久久久久| 国产激情久久久久影院小草| 久久www免费人成精品香蕉| 伊人色综合久久天天人守人婷| 久久精品国产亚洲AV香蕉| 色欲久久久天天天综合网| 国产∨亚洲V天堂无码久久久| 午夜不卡888久久| 久久午夜免费视频| 97久久综合精品久久久综合| 国产毛片久久久久久国产毛片 | 97久久超碰国产精品旧版| 久久精品国产一区二区三区不卡| 久久人人爽人人爽人人片AV东京热 | 狠狠干狠狠久久| 久久噜噜久久久精品66| 久久夜色精品国产噜噜麻豆| 国产精品狼人久久久久影院| 国产精品亚洲综合久久| 国产精品久久久久影视不卡| 亚洲国产高清精品线久久 | 一本大道久久a久久精品综合| 亚洲伊人久久成综合人影院| 久久91精品国产91久久麻豆| 久久久久久久免费视频| 99久久精品免费看国产| 人妻无码αv中文字幕久久|