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

            huyutian

            他強由他強,清風拂山崗;他橫由他橫,明月照大江。他自狠來他自惡,我自一口真氣足

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              20 隨筆 :: 47 文章 :: 22 評論 :: 0 Trackbacks
            /*
            自動建立Key - value的對應。key 和 value可以是任意你需要的類型。 
            根據key值快速查找記錄,查找的復雜度基本是Log(N),如果有1000個記錄,最多查找10次,1,000,000個記錄,最多查找20次。 
            快速插入Key - Value 記錄。 
            快速刪除記錄 
            根據Key 修改value記錄。 
            遍歷所有記錄。
            MAP的插入方式跟別的容器有所不同:除數組形式插入方式外,插入元素時,如果key值相同,則不做插入動作,
            //建議:特殊元素的插入前先遍歷是否存在,若存在則將其刪除后再插入

            */


            #include 
            <iostream>
            #include 
            <map>
            #include 
            <string>
            using namespace std;

            void printMap( map<const char*double> &m)
            {
            map
            <const char*double>::iterator iter;
            for (iter = m.begin(); iter !=m.end(); iter++)
            {
                cout
            <<iter->first<<""<<iter->second<<endl;
            }

            }


            void main()
            {
            bool bRet = false;
            string str;
            //創建map對象
            //創建一個沒有任何元素的map對象m,元素的鍵值類型是char,映照數據類型為int,鍵值的比較函數對象為greater<char>
            map<charint, greater<char> > m1; 
            //創建一個map對象m2,元素的鍵值類型為const char*, 映照數據類型為int, 鍵值的比較函數對象為strLess
            //map<const char *, int> m(strLess()); 
            map<const char*double> m2;
            map
            <const char*double> m3(m2); //用一個map容器的元素和比較函數拷貝生成一個新的map容器對象

            pair
            <const char*double> p1("a",3.6);
            pair
            <const char*double> p2("b"3.2);
            pair
            <const char*double> pairArray[] = {p1,p2};
            map
            <const char*double> m4(pairArray, pairArray+2); //拷貝迭代區間[first, last)所指的數據,創建一個map對象

            cout
            <<"printMap(m4): "<<endl; 
            printMap(m4);

            //元素插入 1-value-type (該方法又細分為4種: value_type, pair, make_pair, 下標方式)
            cout<<endl<<"m4.insert( map<const char*, double>::value_type(\"c\", 1.8) ) = "<<endl;
            bRet 
            = m4.insert( map<const char*double>::value_type("c"1.8) ) .second; 
            if (bRet) 
                cout
            <<"OOOOK!"<<endl;
            else
                cout
            <<"FFFFailed!"<<endl;
            printMap(m4);


            cout
            <<"m4.insert( pair<const char*, double>(\"d\", 2.3) ) = "<<endl;
            str 
            = (m4.insert( pair<const char*double>("d"2.3) )).second ? string("OK") : string("Failed!!");
            cout
            <<str<<endl; 
            printMap(m4);

            cout
            <<"m4.insert( make_pair(\"e\", 6.3) ) = "<<endl;
            //m4.insert( map<const char*, double>::value_type("e", 6.3) );
            str = (m4.insert( make_pair("e"6.3) ) ).second ? string("OK") : string("Failed!!");
            cout
            <<str<<endl; 
            printMap(m4);

            cout
            <<"m4.insert(make_pair(\"e\", 10.2) ) : \nin this way, reinsert the same elem will failed "<<endl;
            str
            = ( (m4.insert(make_pair("e"10.2))).second ) ? string("OK") : string("Failed!!");
            cout
            <<str<<endl; 
            printMap(m4);

            cout
            <<"m4[\"e\"] = 10.2 will OK, \nbut maybe low-level efficiency, and dont return ture/false."<<endl;
            m4[
            "e"= 10.2;
            printMap(m4);
            //元素插入:2-在某位置前插入 insert(&pos, elem)
            //元素插入:3-迭代區間的插入 insert(&first, &last)
            //

            //元素刪除 鍵值刪除用size_type erase(elem), 迭代器位置上的元素刪除用void erase(&pos); 
            //迭代區間[&first, &last)元素刪除用void erase(&first, &last) , 刪除所有元素用void clear()

            cout
            <<endl<<"m4.erase(\"100\") = "<<endl;
                m4.erase(
            "100");
            printMap(m4);

            cout
            <<"m4.erase(\"c\") = "<<endl;
            m4.erase(
            "c");
            printMap(m4);

            //搜索元素
            cout<<endl<<"m4.find(\"b\") : "<<endl;
            map
            <const char*double>::iterator iterFind1;
            iterFind1 
            = m4.find("b");
            if (iterFind1 != m4.end())
                cout
            <<(*iterFind1).second<<endl;
            else
               cout
            <<"not found!"<<endl;

            cout
            <<"m4.find(\"c\") : "<<endl;
            map
            <const char*double>::iterator iterFind2;
            iterFind2 
            = m4.find("c");
            if (iterFind2 != m4.end())
                cout
            <<(*iterFind2).second<<endl;
            else
               cout
            <<"not found!"<<endl;

            cout
            <<endl<<"Other: "<<endl;
            cout
            <<"m4.empty() = "<<m4.empty()<<endl;
            cout
            <<"m4.size() = "<<m4.size()<<", m4.max_size() = (hex)"<<hex<<m4.max_size()<<endl;
            }



            //=================測試結=========================
            printMap(m4):
            b: 
            3.2
            a: 
            3.6

            m4.insert( map
            <const char*double>::value_type("c
            OOOOK!
            c: 
            1.8
            b: 
            3.2
            a: 
            3.6
            m4.insert( pair
            <const char*double>("d"2.3) ) =
            OK
            d: 
            2.3
            c: 
            1.8
            b: 
            3.2
            a: 
            3.6
            m4.insert( make_pair(
            "e"6.3) ) =
            OK
            e: 
            6.3
            d: 
            2.3
            c: 
            1.8
            b: 
            3.2
            a: 
            3.6
            m4.insert(make_pair(
            "e"10.2) ) :
            in this way, reinsert the same elem will failed
            Failed
            !!
            e: 
            6.3
            d: 
            2.3
            c: 
            1.8
            b: 
            3.2
            a: 
            3.6
            m4[
            "e"= 10.2 will OK,
            but maybe low
            -level efficiency, and dont return tu
            e: 
            10.2
            d: 
            2.3
            c: 
            1.8
            b: 
            3.2
            a: 
            3.6

            m4.erase(
            "100"=
            e: 
            10.2
            d: 
            2.3
            c: 
            1.8
            b: 
            3.2
            a: 
            3.6
            m4.erase(
            "c"=
            e: 
            10.2
            d: 
            2.3
            b: 
            3.2
            a: 
            3.6

            m4.find(
            "b") :
            3.2
            m4.find(
            "c") :
            not found
            !

            Other:
            m4.empty() 
            = 0
            m4.size() 
            = 4, m4.max_size() = (hex)fffffff

            posted on 2010-02-07 23:57 胡雨田 閱讀(657) 評論(0)  編輯 收藏 引用 所屬分類: 編程技巧
            亚洲欧美伊人久久综合一区二区| 日本五月天婷久久网站| 亚洲а∨天堂久久精品9966| 婷婷综合久久中文字幕蜜桃三电影| 国产99久久久国产精品~~牛| 久久人人爽人人爽人人片AV不 | 久久久免费观成人影院| 久久精品国产一区| 精品久久久久久| 色综合久久天天综合| 日本道色综合久久影院| 日本免费一区二区久久人人澡| 99国产欧美久久久精品蜜芽| 久久精品一本到99热免费| 久久综合香蕉国产蜜臀AV| 久久久久亚洲av无码专区导航| 三上悠亚久久精品| 国产精品美女久久久| 亚洲国产天堂久久综合网站| 国产精品无码久久四虎| 免费精品久久久久久中文字幕| 日韩AV毛片精品久久久| 欧美伊人久久大香线蕉综合| 精品熟女少妇AV免费久久| 无码超乳爆乳中文字幕久久| 久久青青草原精品影院| 精品免费久久久久国产一区| 欧美性大战久久久久久| 99精品久久精品一区二区| 国产午夜久久影院| 久久精品国产亚洲7777| 国产精品久久新婚兰兰| 久久不见久久见免费视频7| 草草久久久无码国产专区| 亚洲国产精品无码久久九九| 人妻无码αv中文字幕久久| 66精品综合久久久久久久| 久久久精品国产| 久久无码专区国产精品发布 | 久久国产欧美日韩精品| 久久国产高潮流白浆免费观看|