c++ map多重嵌套【轉】

來源:互聯網
上載者:User

標籤:

最近開發中要用到STL,然後自己查看了一些資料,並寫了一些代碼。在使用<map>中,想起了如果是map嵌套,該如何應用呢?下面是我的coding內容:

        對於傳統的map,我們只需要:

        #include<map>

        #include<iostream>

        int main()

        {

        map<int, string> scores;

        scores.insert(make_pair(100,"maxi"));

        scores[100]="MAXI";

        scores.insert(make_pair(300,"xiaoyu"));

        scores.insert(make_pair(300,"xiao"));

        scores[200]="xiaoma";

        map<int,string>::iterator pScores;

        for(pScores=scores.begin();pScores!=scores.end();pScores++)

        {

                std::cout<<pScores->first<<"  "<<pScores->second<<endl;

        }

       

         return 0;}

         結果輸出:

         100  MAXI

         200 xiaoma

         300 xiaoyu

         由此可以看出,scores[100]="MAXI"會直接替換掉原來100map對應的value,而如果調用scores.insert()函數,則由於本map是單映射的,

        但如果我想定義嵌套的map並對它進行遍曆,該如何進行呢:

        #include<map>

        #include<iostream>

        int main()

        {

              map<int,map<int,string> >multiMap; //對於這樣的map嵌套定義,有兩種插入方法:

              map<int, string> temp;  //定義一個map<int, string>變數,對其定義後在插入multiMap

              temp.insert(make_pair(90,"hi"));

              temp.insert(pair<int,string>(100,"maxi)); //pair<int,string>()和make_pair()有相同作用

              multiMap.insert(make_pair(10, temp));   //將臨時變數插入到multiMap中

              multiMap[10][80]="xiaoyu"; //可以直接賦值

              mulitMap[5][30]="xiaoma";

             

              map<int,map<int,string> >::iterator multitr;  // 以下是如何遍曆本multiMap
              map<int,string>::iterator intertr;
              for(multitr=multiMap.begin();multitr!=multiMap.end();multitr++)
              {
                   for(intertr= multitr ->second.begin(); intertr != multitr ->second.end(); intertr ++)
                    std::cout<< multitr ->first<<" "<<intertr->first<<" ("<< intertr -> second <<")"<<endl;
              }

              return 0;

          }  

    

          運行結果如下:

           

              5 30 (xiaoma)
             10 80 (xiaoyu)
             10 90 (hi)
             10 100 (maxi)

          總結,map的成員加入有兩種賦值方法,一種是調用map.insert()函數,這樣,由於是單映射,後面加入的新的pair對如果有key值和前面一樣,那麼後面的pair對元素將不會被加入到map中;但如果是直接[ ]=賦值操作的話,相當於數組賦值,會直接替換掉原來具有相同key域的pair對。本發現會對如何增加pair對資料的調用方法有些指導意義。

c++ map多重嵌套【轉】

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.