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

            [轉(zhuǎn)載]boost庫(kù)的使用介紹

            1.boost::any

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

            使用方法:
            any::type() 返回包裝的類(lèi)型
            any_cast可用于any到其他類(lèi)型的轉(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僅僅是對(duì)數(shù)組一層薄薄的封裝,提供跟各種算法配合的iterator,使用方法很簡(jiǎn)單
            注意:可以使用{}來(lái)初始化array,因?yàn)閍rray所有的成員變量都是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ù)字類(lèi)型(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)點(diǎn)是類(lèi)型安全,不會(huì)因?yàn)轭?lèi)型和參數(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是用于切割字符串的,類(lèi)似于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是為了提供跨平臺(tái)的thread機(jī)制。利用boost::function來(lái)完成委托。

            ?

            #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就是智能指針的實(shí)現(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 2006-10-05 10:55 永遇樂(lè) 閱讀(1095) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): STL & Boost

            <2006年11月>
            2930311234
            567891011
            12131415161718
            19202122232425
            262728293012
            3456789

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿(6)

            隨筆分類(lèi)

            推薦Blog

            友情鏈接

            搜索

            最新評(píng)論

            閱讀排行榜

            久久国产色av免费看| 2020国产成人久久精品| 亚洲国产天堂久久综合网站| 久久天堂电影网| 狠狠色丁香婷婷久久综合五月| 人妻无码αv中文字幕久久| 91久久精品无码一区二区毛片| 久久www免费人成看国产片| 久久久久人妻一区二区三区 | 一本色道久久综合狠狠躁| 99久久无色码中文字幕| 亚洲中文字幕伊人久久无码| 久久亚洲高清观看| 久久99精品久久久久久hb无码| 性高湖久久久久久久久AAAAA| 久久精品国产秦先生| 亚洲精品无码久久久久去q | 无码8090精品久久一区| 免费精品99久久国产综合精品| 久久久久久九九99精品| 性高湖久久久久久久久AAAAA| www亚洲欲色成人久久精品| 久久精品成人免费看| 国产精品久久99| 精品免费久久久久久久| 无码国内精品久久人妻| 97精品伊人久久久大香线蕉| 久久这里只有精品首页| 一本色道久久88综合日韩精品| 久久免费香蕉视频| 久久这里只有精品视频99| 无码任你躁久久久久久老妇| 无码8090精品久久一区| 久久人做人爽一区二区三区| 久久综合亚洲色HEZYO社区| 久久国产欧美日韩精品免费| 天天影视色香欲综合久久| 一日本道伊人久久综合影| 亚洲人成网站999久久久综合| 久久天天躁狠狠躁夜夜avapp | 久久久久99精品成人片|