• <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)  編輯 收藏 引用 所屬分類: 編程技巧
            日韩久久无码免费毛片软件| 久久精品国产亚洲综合色| 久久久久国产| A级毛片无码久久精品免费| 奇米综合四色77777久久| 成人久久久观看免费毛片| 久久人人超碰精品CAOPOREN| 久久综合给合久久国产免费 | 久久久久免费精品国产| 久久精品午夜一区二区福利| 久久这里只有精品久久| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 久久久久人妻一区精品| 久久伊人中文无码| 久久久国产乱子伦精品作者| 久久黄视频| 色综合久久综合网观看| 精品久久久久久中文字幕大豆网| 久久电影网2021| 亚洲精品乱码久久久久久自慰| 99久久精品国产一区二区蜜芽| 久久综合九色综合网站| 国内精品久久久久久久久电影网| 婷婷久久香蕉五月综合加勒比| 亚洲国产成人久久一区WWW| 国产99久久九九精品无码| 99久久人妻无码精品系列| 一本色道久久综合狠狠躁| 久久涩综合| 欧美伊人久久大香线蕉综合69| 99热成人精品免费久久| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 色综合久久88色综合天天| 精品无码久久久久久尤物| 日韩人妻无码一区二区三区久久 | 久久精品无码专区免费东京热| 伊人久久成人成综合网222| 性做久久久久久久久老女人| 一本久久综合亚洲鲁鲁五月天| 亚洲第一永久AV网站久久精品男人的天堂AV| 亚洲国产精品久久久久|