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

            [轉載]boost庫的使用介紹

            1.boost::any

            boost::any是一種通用的數據類型,可以將各種類型包裝后統一放入容器內
            最重要的它是類型安全的。有點象COM里面的variant.

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

            ?

            #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僅僅是對數組一層薄薄的封裝,提供跟各種算法配合的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用于將字符串轉換成各種數字類型(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,優點是類型安全,不會因為類型和參數不匹配而導致程序崩潰了
            而且還可以重復使用參數

            ?

            #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就是所謂的泛函數,能夠對普通函數指針,成員函數指針,functor進行委托,達到遲調用的效果

            ?

            #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就是智能指針的實現,不象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 永遇樂 閱讀(1083) 評論(0)  編輯 收藏 引用 所屬分類: STL & Boost

            <2009年6月>
            31123456
            78910111213
            14151617181920
            21222324252627
            2829301234
            567891011

            導航

            統計

            常用鏈接

            留言簿(6)

            隨筆分類

            推薦Blog

            友情鏈接

            搜索

            最新評論

            閱讀排行榜

            久久久久亚洲AV片无码下载蜜桃| 91麻豆国产精品91久久久| 久久精品视屏| 久久久久波多野结衣高潮| 国内精品伊人久久久影院| 欧美丰满熟妇BBB久久久| 亚洲国产精品热久久| 久久久久久久久66精品片| 99久久无色码中文字幕| 亚洲国产成人久久综合碰| 国产午夜免费高清久久影院| 999久久久国产精品| 伊人色综合九久久天天蜜桃 | 久久AⅤ人妻少妇嫩草影院| 亚洲精品国产自在久久| AV色综合久久天堂AV色综合在| 99久久国产热无码精品免费久久久久| 久久久久亚洲av成人网人人软件 | 久久久久精品国产亚洲AV无码| 精品久久777| 久久99精品国产麻豆| 久久久无码精品亚洲日韩京东传媒 | 人妻少妇久久中文字幕一区二区| 久久精品无码一区二区三区免费 | 久久精品国产色蜜蜜麻豆| 久久777国产线看观看精品| 亚洲国产精品无码久久一区二区 | 精品久久久久久久久免费影院| 99久久亚洲综合精品网站| 2021久久国自产拍精品| 久久国产精品成人影院| 亚洲国产精品高清久久久| 久久无码AV中文出轨人妻| 亚洲精品视频久久久| 亚洲国产精品狼友中文久久久| 久久精品成人| 亚州日韩精品专区久久久| 天天影视色香欲综合久久| 久久久久亚洲av成人无码电影| 国产精品美女久久久免费| 国内精品欧美久久精品|