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

            牽著老婆滿街逛

            嚴(yán)以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            boost庫的常用組件的使用(ZT)

            1.boost::any

            boost::any是一種通用的數(shù)據(jù)類型,可以將各種類型包裝后統(tǒng)一放入容器內(nèi)
            最重要的它是類型安全的。有點象COM里面的variant.

            使用方法:
            any::type() 返回包裝的類型
            any_cast可用于any到其他類型的轉(zhuǎn)化

            ?

            #include? < boost / any.hpp >
            void ?test_any()
            {
            ?typedef?std::vector
            < boost::any > ?many;
            ?many?a;
            ?a.push_back(
            2 );
            ?a.push_back(
            string ( " test " ));

            ?
            for (unsigned? int ?i = 0 ;i < a.size(); ++ i)
            ?
            {
            ??cout
            << a[i].type().name() << endl;
            ??
            try
            ??
            {
            ???
            int ?result? = ?any_cast < int > (a[i]);
            ???cout
            << result << endl;
            ??}

            ??
            catch (boost::bad_any_cast? & ?ex)
            ??
            {
            ???cout
            << " cast?error: " << ex.what() << endl;
            ??}

            ?}

            }


            2.boost::array

            boost::array僅僅是對數(shù)組一層薄薄的封裝,提供跟各種算法配合的iterator,使用方法很簡單
            注意:可以使用{}來初始化array,因為array所有的成員變量都是public的

            ?

            #include? < boost / array.hpp >
            void ?test_array()
            {
            ?array
            < int , 10 > ?ai? = ? { 1 , 2 , 3 } ;

            ?
            for (size_t?i = 0 ;i < ai.size(); ++ i)
            ?
            {
            ??cout
            << ai[i] << endl;
            ?}

            }


            3.boost::lexical_cast
            lexical_cast用于將字符串轉(zhuǎn)換成各種數(shù)字類型(int,float,short etc.)

            ?

            #include? < boost / lexical_cast.hpp >
            void ?test_lexical_cast()
            {
            ?
            int ?i? = ?boost::lexical_cast < int > ( " 123 " );
            ?cout?
            << ?i? << ?endl;
            }


            4.boost::format
            boost::format是用于替代c里面的sprintf,優(yōu)點是類型安全,不會因為類型和參數(shù)不匹配而導(dǎo)致程序崩潰了
            而且還可以重復(fù)使用參數(shù)

            ?

            #include? < boost / format.hpp >
            void ?test_format()
            {
            ?cout?
            << ?boost::format( " writing?%1%,??x=%2%?:?%3%-th?try " )? % ? " toto " ? % ? 40.23 ? % ? 50 ? << endl;?

            ?format?f(
            " a=%1%,b=%2%,c=%3%,a=%1% " );
            ?f?
            % ? " string " ? % ? 2 ? % ? 10.0 ;

            ?cout?
            << ?f.str()? << ?endl;
            }


            5.boost::tokenizer
            boost::tokenizer是用于切割字符串的,類似于Java里面的StringTokenizer。

            ?

            #include? < boost / tokenizer.hpp >
            void ?test_tokenizer()
            {
            ?
            string ?s( " This?is??,?a?,test! " );
            ?boost::tokenizer
            <> ?tok(s);
            ?
            for (tokenizer <> ::iterator?beg = tok.begin();?beg != tok.end(); ++ beg) {
            ???????cout?
            << ? * beg? << ? " \n " ;
            ?}

            }



            6.boost::thread
            boost::thread是為了提供跨平臺的thread機制。利用boost::function來完成委托。

            ?

            #include? < boost / thread.hpp >
            void ?mythread()
            {
            ?cout
            << " hello,thread! " << endl;
            }


            void ?test_thread()
            {
            ?boost::function
            < ? void ?()? > ?f(mythread);
            ?boost::thread?t(f);
            ?t.join();
            ?cout
            << " thread?is?over! " << endl;
            }


            7.boost::serialization
            boost::serialization提供object的序列化功能。而且提供好幾種序列化的格式,比如text,binary,xml

            ?

            #include? < boost / archive / text_oarchive.hpp >
            #include?
            < boost / archive / text_iarchive.hpp >
            #include?
            < boost / archive / xml_oarchive.hpp >
            void ?test_serialization()
            {
            ?boost::archive::text_oarchive?to(cout?,?boost::archive::no_header);
            ?
            int ?i? = ? 10 ;
            ?
            string ?s? = ? " This?is?a?test\n " ;
            ?to?
            & ?i;
            ?to?
            & ?s;

            ?ofstream?f(
            " test.xml " );
            ?boost::archive::xml_oarchive?xo(f);
            ?xo?
            & ?BOOST_SERIALIZATION_NVP(i)? & ?BOOST_SERIALIZATION_NVP(s);

            ?boost::archive::text_iarchive?ti(cin?,?boost::archive::no_header);
            ?ti?
            & ?i? & ?s;
            ?cout?
            << " i= " << ?i? << ?endl;
            ?cout?
            << " s= " << ?s? << ?endl;
            }

            ?

            8.boost::function
            boost::function就是所謂的泛函數(shù),能夠?qū)ζ胀ê瘮?shù)指針,成員函數(shù)指針,functor進(jìn)行委托,達(dá)到遲調(diào)用的效果

            ?

            #include? < boost / function.hpp >
            int ?foo( int ?x, int ?y)
            {
            ?cout
            << ? " (foo?invoking)x?=? " << x? << ? " ?y?=? " << ?y? << endl;
            ?
            return ?x + y;
            }


            struct ?test
            {
            ?
            int ?foo( int ?x, int ?y)
            ?
            {
            ??cout
            << ? " (test::foo?invoking)x?=? " << x? << ? " ?y?=? " << ?y? << endl;
            ??
            return ?x + y;
            ?}

            }
            ;

            void ?test_function()
            {
            ?boost::function
            < int ?( int , int ) > ?f;
            ?f?
            = ?foo;
            ?cout?
            << ? " f(2,3)= " << f( 2 , 3 ) << endl;

            ?test?x;
            ?
            /* f?=?std::bind1st(
            ??????std::mem_fun(&test::foo),?&x);
            */

            ?boost::function
            < int ?(test * , int , int ) > ?f2;
            ?f2?
            = ? & test::foo;
            ??
            ?cout?
            << ? " f2(5,3)= " << f2( & x, 5 , 3 ) << endl;
            }


            9.boost::shared_ptr
            boost::shared_ptr就是智能指針的實現(xiàn),不象std::auto_ptr,它是可以stl的容器一起使用的,非常的方便

            #include? < boost / shared_ptr.hpp >
            class ?Shared
            {
            public :
            ?Shared()
            ?
            {
            ??cout?
            << ? " ctor()?called " << endl;
            ?}

            ?Shared(
            const ?Shared? & ?other)
            ?
            {
            ??cout?
            << ? " copy?ctor()?called " << endl;
            ?}

            ?
            ~ Shared()
            ?
            {
            ??cout?
            << ? " dtor()?called " << endl;
            ?}

            ?Shared?
            & ? operator ? = ?( const ?Shared? & ?other)
            ?
            {
            ??cout?
            << ? " operator?=??called " << endl;
            ?}

            }
            ;

            void ?test_shared_ptr()
            {
            ?typedef?boost::shared_ptr
            < Shared > ?SharedSP;
            ?typedef?vector
            < SharedSP > ?VShared;
            ?VShared?v;
            ?v.push_back(SharedSP(
            new ?Shared()));
            ?v.push_back(SharedSP(
            new ?Shared()));
            }
            ?

            posted on 2007-03-20 22:51 楊粼波 閱讀(345) 評論(0)  編輯 收藏 引用


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


            久久这里只精品国产99热| 久久电影网一区| 99蜜桃臀久久久欧美精品网站 | av午夜福利一片免费看久久| 中文字幕成人精品久久不卡| 亚洲人AV永久一区二区三区久久| 国内精品久久久久久99| 久久久精品国产亚洲成人满18免费网站| 久久笫一福利免费导航 | 久久人人爽人人爽人人爽| 久久精品国产99久久无毒不卡| 久久久无码精品亚洲日韩软件| 国产成人无码精品久久久性色| 国产成人精品久久亚洲高清不卡| 久久精品青青草原伊人| 国内精品伊人久久久久网站| 久久精品中文字幕无码绿巨人 | 久久福利青草精品资源站免费| 久久成人国产精品免费软件| 青青草国产97免久久费观看| 久久r热这里有精品视频| 天天爽天天狠久久久综合麻豆| 人妻系列无码专区久久五月天| 日本一区精品久久久久影院| 人妻精品久久久久中文字幕69 | 国产精品青草久久久久福利99| 午夜精品久久久久久99热| 亚洲日本va午夜中文字幕久久 | 成人综合伊人五月婷久久| 蜜臀av性久久久久蜜臀aⅴ| 国产69精品久久久久久人妻精品| 亚洲国产成人久久精品99| 久久久艹| 日日狠狠久久偷偷色综合0| 久久97久久97精品免视看秋霞| 亚洲国产精品久久久久久| 91精品国产综合久久四虎久久无码一级 | 无码任你躁久久久久久久| 久久精品成人| 色综合合久久天天给综看| 久久国产AVJUST麻豆|