• <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 - 311, comments - 0, trackbacks - 0, articles - 0
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            我們知道,在向map中插入數(shù)據(jù)對(duì)時(shí)候,map中的元素將按照一定的順序被插入到對(duì)應(yīng)的節(jié)點(diǎn)上,換句話說(shuō),從map的頭開(kāi)始順序地讀取數(shù)據(jù),其數(shù)據(jù)的順序?qū)⒉煌谀悴迦霑r(shí)候的順序, 例子如下:

             

            std::map<double,int> dnMap;

             

            dnMap[10.0] = 1;

            dnMap[2.9] = 2;

            dnMap[20.4] = 3;

             

            std::map<double,int>::iterator it = dnMap.begin();

            for(; it != dnMap.end();++it)

            {

            std::pair<double,int> _p = *it;

            std::cout <<"Key =" <<_p.first<<" Value = "<< _p.second<< endl;

            }

             

            輸出的順序?qū)⑹牵?/p>

             

            Key = Value =

             

            2.9 2

            10.0 1

            20.4 3

             

            如果map的鍵是用戶自定義的類型T,那么你還必須在T中實(shí)現(xiàn)比較運(yùn)算符,至于具體的細(xì)節(jié)這里就不說(shuō)了。

             

            但是如果你覺(jué)得map對(duì)你很合適,但是就是希望插入map中的數(shù)據(jù)保持最初插入時(shí)候的順序,這時(shí)候怎么辦?

             

            讓我們來(lái)看看stl中map的 聲明形式 (http://www.sgi.com/tech/stl/Map.html

             

            map<Key, Data, Compare, Alloc>

             

            注意第三個(gè)參數(shù)

            Compare : The key comparison function, a Strict Weak Ordering whose argument type is key_type; it returns true if its first argument is less than its second argument, and false otherwise. This is also defined as map::key_compare.

             

            其作用就是比較Key的大小,按照一定的順序確定map節(jié)點(diǎn)的順序,我們當(dāng)然就可以定制這個(gè)函數(shù)對(duì)象以實(shí)現(xiàn)我們想要的的排序規(guī)則。

             

            好了,廢話說(shuō)了不少,我的做法是

             

            template<class T>
            struct DisableCompare :public std::binary_function<T,T,bool>
            {
            bool operator()(T lhs,T rhs) const
            {
            return true;
            }
            };

             

             

            這樣來(lái)使用定制化的map :

             

            std::map<double,int,DisableCompare<double> > sMap;
            sMap[10.9] = 1;
            sMap[3.5] = 2;
            sMap[30.0] = 3;
            sMap[2.4] = 4;

             

            就可以保持?jǐn)?shù)據(jù)插入時(shí)候的順序了。
            結(jié)論:這種方法只適合int,double數(shù)值為Key的情況,字符串的情況不行,最后用Vector解決,方法如下:

                typedef std::pair  <WE::String,   WE::String>              SqlPair;   
                typedef std::vector
            <std::pair<WE::String, WE::String > >  SqlBaseVector;

               
            class SqlVector : public SqlBaseVector
               {
               
            public:
                   
            void  push_back  (const SqlPair& sqlPair);
                   
            void  push_back  (const WE::String& sql, const  WE::String& tableName);

                   SqlVector(){};
                   
            ~SqlVector(){};
               };

                
            class SqlMap : public SqlVector
                {     
                
            public:
                    
            const WE::String& get_element(const WE::String& key);
                    
            void  set_element(const WE::String& key, const  WE::String& value);
                    SqlMap(){};
                    
            ~SqlMap(){};
                };


             

            亚洲精品国产美女久久久| 国产精品一久久香蕉产线看| 久久夜色精品国产网站| 亚洲女久久久噜噜噜熟女| 久久久久久精品免费看SSS| 精品久久久中文字幕人妻| 97久久久精品综合88久久| 丰满少妇人妻久久久久久4| 亚洲人AV永久一区二区三区久久| 婷婷综合久久中文字幕蜜桃三电影| 久久91精品国产91久久麻豆| 久久综合伊人77777| 久久久国产精品亚洲一区| 少妇久久久久久被弄到高潮| 69久久夜色精品国产69| 久久久一本精品99久久精品88| 国产精品久久国产精品99盘| 伊人久久无码精品中文字幕| 香港aa三级久久三级| 久久亚洲欧美国产精品| 中文成人久久久久影院免费观看| 久久99精品国产99久久6男男| 国产69精品久久久久9999APGF | 无码国产69精品久久久久网站| 99精品久久久久久久婷婷| 久久国产色AV免费看| 久久精品国产日本波多野结衣| 精品人妻伦九区久久AAA片69 | 伊人久久大香线蕉综合网站| 久久久久夜夜夜精品国产| 91精品国产91久久综合| 亚洲精品tv久久久久久久久| 久久人人爽人人爽人人爽| 伊人久久大香线蕉AV一区二区| 久久伊人五月天论坛| 亚洲国产精品综合久久一线| 武侠古典久久婷婷狼人伊人| 久久久久亚洲AV成人网| 久久人人爽人人精品视频| segui久久国产精品| 久久久久久国产精品免费免费|