亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++ STL之map和multimap用法

2019-11-06 06:17:10
字體:
來源:轉載
供稿:網友

一. Map與 Multimap 特點

Map 和 Multimap 將(key/value) 一組當做元素,它們可以根據 key 的排序準則自動將元素排序。

Multimap允許重復元素,map不允許重復。

類型定義:

[cpp] view plaincopytypedef std::map<std::string, float, std::greater<string> > StringFloatMap;     ...  StringFloatMap coll;  

注意,兩個>之間需加上一個空格,因為>>會被編譯器視為移位操作符。

Map 和 multimap 通常以平衡二叉樹來實現,map 和 multimap 擁有 set 和 multiset 所有能為和所有操作函數。

通常,不能直接改變key 的值,value 的值是可以直接修改的,因此可以想像元素的實質類型是 pair<constkey, T>。

二、在map和multimap中添加元素

map<int ,string>maplive;1. maplive.insert(pair<int,string>(102,"aclive"));2. maplive.insert(map<int,string>::value_type(321,"hai"));3. maplive[112]="APRil";//map中最簡單最常用的插入添加!

4. map中元素的查找:

find()函數返回一個迭代器指向鍵值為key的元素,如果沒找到就返回指向map尾部的迭代器。

map<int ,string >::iteratorl_it;; l_it=maplive.find(112);//返回的是一個指針if(l_it==maplive.end())cout<<"we do not find112"<<endl;else

cout<<"wo find112"<<endl;

 

map<string,string>m;

if(m[112]=="")

cout<<"we do not find112"<<endl;

4. map中元素的刪除:如果刪除112;map<int ,string>::iterator l_it;l_it =maplive.find(112);if( l_it == maplive.end())cout<<"we do not find112"<<endl;else maplive.erase(l_it);//delete 112;

5. map中 swap的用法:Map中的swap不是一個容器中的元素交換,而是兩個容器交換;For example:#include<map>#include<iostream>

usingnamespace std;

int main(){map <int, int> m1, m2, m3;map <int,int>::iterator m1_Iter;

m1.insert( pair <int, int>(1, 10 ) );m1.insert ( pair <int,int> ( 2, 20 ) );m1.insert ( pair <int,int> ( 3, 30 ) );m2.insert ( pair <int,int> ( 10, 100 ) );m2.insert ( pair <int,int> ( 20, 200 ) );m3.insert ( pair <int,int> ( 30, 300 ) );

cout << "The original map m1is:";for ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )cout << " "<<m1_Iter->second;cout << "."<< endl;

// This isthe member function version of swap// m2 is said to be theargument map; m1 the target mapm1.swap( m2);

cout << "Afterswapping with m2, map m1 is:";for ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )cout << " "<< m1_Iter ->second;cout << "."<< endl;

cout << "After swapping with m2, mapm2 is:";for ( m1_Iter = m2.begin( ); m1_Iter != m2.end(); m1_Iter++ )cout << " "<< m1_Iter ->second;cout << "."<< endl;

// This is the specialized template version of swapswap( m1, m3 );

cout << "Afterswapping with m3, map m1 is:";for ( m1_Iter = m1.begin( ); m1_Iter != m1.end(); m1_Iter++ )cout << " "<< m1_Iter ->second;cout << "."<< endl;}

6. map的sort問題:Map中的元素是自動按key升序排序,所以不能對map用sort函數:For example:#include<map>#include<iostream>

usingnamespace std;

int main( ){map<int, int> m1;map <int,int>::iterator m1_Iter;

m1.insert (pair <int, int> (1, 20 ) );m1.insert ( pair<int, int> ( 4, 40) );m1.insert ( pair<int, int> ( 3, 60) );m1.insert ( pair<int, int> ( 2, 50) );m1.insert ( pair<int, int> ( 6, 40) );m1.insert ( pair<int, int> ( 7, 30) );

cout<< "The original map m1is:"<<endl;for ( m1_Iter = m1.begin( );m1_Iter != m1.end( ); m1_Iter++ )cout << m1_Iter->first<<""<<m1_Iter->second<<endl;}

The original map m1 is:1 202 503 604 406 407 30

7. map的基本操作函數:C++Maps 是一種關聯式容器,包含“關鍵字/值”對begin() 返回指向map頭部的迭代器clear() 刪除所有元素count() 返回指定元素出現的次數empty() 如果map為空則返回trueend() 返回指向map末尾的迭代器equal_range() 返回特殊條目的迭代器對erase() 刪除一個元素find() 查找一個元素get_allocator() 返回map的配置器insert() 插入元素key_comp() 返回比較元素key的函數lower_bound(k) 返回鍵值一個迭代器,該迭代器指向第一個鍵值不小于k的元素。

upper_bound(k) 最后一個大于等于k的位置,也是有一個新元素k進來時的插入位置

max_size() 返回可以容納的最大元素個數rbegin() 返回一個指向map尾部的逆向迭代器rend() 返回一個指向map頭部的逆向迭代器size() 返回map中元素的個數swap() 交換兩個mapvalue_comp() 返回比較元素value的函數

multimap[cpp] view plain copy print?//multimap允許重復的鍵值插入容器  //        **********************************************************        //        * pair只包含一對數值:pair<int,char>                       *  //        * map是一個集合類型,永遠保持排好序的,                   *  //  pair  * map每一個成員就是一個pair,例如:map<int,char>           *  //        * map的insert()可以把一個pair對象作為map的參數,例如map<p> *  //        ***********************************************************  #pragma warning(disable:4786)  #include<map>  #include<iostream>  using namespace std;    int main(void)  {   multimap<int,char*> m;   //multimap的插入只能用insert()不能用數組   m.insert(pair<int,char*>(1,"apple"));      m.insert(pair<int,char*>(1,"pear"));//apple和pear的價錢完全有可能是一樣的   m.insert(pair<int,char*>(2,"banana"));   //multimap的遍歷只能用迭代器方式不能用數組   cout<<"***************************************"<<endl;   multimap<int,char*>::iterator i,iend;   iend=m.end();   for(i=m.begin();i!=iend;i++)   {    cout<<(*i).second<<"的價錢是"     <<(*i).first<<"元/斤/n";   }   cout<<"***************************************"<<endl;      //元素的反相遍歷   multimap<int,char*>::reverse_iterator j,jend;   jend=m.rend();   for(j=m.rbegin();j!=jend;j++)   {    cout<<(*j).second<<"的價錢是"     <<(*j).first<<"元/斤/n";   }   cout<<"***************************************"<<endl;   //元素的搜索find(),pair<iterator,iterator>equal_range(const key_type &k)const      //和multiset的用法一樣   multimap<int,char*>::iterator s;   s=m.find(1);//find()只要找到一個就行了,然后立即返回。   cout<<(*s).second<<"    "    <<(*s).first<<endl;   cout<<"鍵值等于1的元素個數是:"<<m.count(1)<<endl;   cout<<"***************************************"<<endl;   //刪除 erase(),clear()   m.erase(1);      for(i=m.begin();i!=iend;i++)   {    cout<<(*i).second<<"的價錢是"     <<(*i).first<<"元/斤/n";   }      return 0;  }  
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性色xo影院| 日韩成人久久久| 青青草成人在线| 97精品一区二区三区| 日韩国产高清视频在线| 在线看日韩av| 国产精品成熟老女人| 久久久久亚洲精品成人网小说| 亚洲已满18点击进入在线看片| 亚洲视频axxx| 国产精品久久久久久久久久久久久| 91精品国产乱码久久久久久久久| 亚洲性夜色噜噜噜7777| 欧美成人全部免费| 91伊人影院在线播放| 亚洲国产精品va| 国产精品第七十二页| 91av在线播放视频| 国产日韩av在线| 麻豆国产va免费精品高清在线| 国产精品久久久久久av下载红粉| 国产成人精品免高潮在线观看| 久久久精品在线观看| 欧美日在线观看| 久久午夜a级毛片| 国产精品夜色7777狼人| 中文字幕成人在线| 国产精品男女猛烈高潮激情| 国产成人免费91av在线| 欧美性猛交xxxx富婆| 91国语精品自产拍在线观看性色| 日韩在线视频国产| 亚洲国产精品系列| 欧美裸体xxxx| 欧美一区亚洲一区| 国产精品久久久久久久久久久久久| 7777免费精品视频| 91香蕉嫩草神马影院在线观看| 国产成人自拍视频在线观看| 欧美日韩一区二区免费在线观看| 欧美一级片在线播放| 亚洲电影天堂av| 欧美久久久精品| 精品久久久久久久久国产字幕| 91精品国产91久久久久久| 欧美午夜电影在线| 最近2019中文字幕第三页视频| 欧美电影在线免费观看网站| 秋霞午夜一区二区| 国产精自产拍久久久久久| 国产精品久久久久久久久久新婚| 亚洲免费成人av电影| 深夜福利91大全| 成人福利在线视频| 久久99久久99精品免观看粉嫩| 亚洲色图15p| 国产精品久久色| 国产精品永久免费视频| 精品久久久久久中文字幕大豆网| 成人免费黄色网| 国产精品久久久久久久久久久久| 久久久伊人日本| 欧美激情精品久久久久久变态| 欧美日韩国产123| 日韩电影第一页| 欧洲美女7788成人免费视频| 成人高清视频观看www| 欧美亚洲视频一区二区| 久久国产精品首页| 精品中文字幕久久久久久| 久久久精品国产| 亚洲欧美国产精品专区久久| 国产精品扒开腿做爽爽爽的视频| 色偷偷噜噜噜亚洲男人| 亚洲成人xxx| 欧美国产日韩中文字幕在线| 欧美日韩一二三四五区| 欧美成人免费全部| 久久免费少妇高潮久久精品99| 欧美国产欧美亚洲国产日韩mv天天看完整| 黄网动漫久久久| 97在线观看视频| 国产精品v日韩精品| 久久777国产线看观看精品| 国产精品亚洲综合天堂夜夜| 欧美成人h版在线观看| 久久天天躁狠狠躁夜夜躁| 性色av一区二区三区红粉影视| 亚洲成人激情在线观看| 亚洲欧美综合精品久久成人| 日韩av高清不卡| 国产亚洲欧美一区| 欧美在线一级视频| 国产成人精品视| 欧美性色xo影院| 久久久久五月天| 国产精品久久av| 国产精品美女免费| 在线看日韩欧美| 日韩精品中文字幕久久臀| 欧美性做爰毛片| 91免费在线视频网站| 91香蕉电影院| 国产福利精品视频| 国产精品伦子伦免费视频| 国产精品va在线播放| 97成人超碰免| 午夜精品久久久久久久久久久久| www.久久草.com| 国产精品极品在线| 色悠久久久久综合先锋影音下载| 国内精品模特av私拍在线观看| 中文字幕欧美在线| 国产精品∨欧美精品v日韩精品| 色偷偷91综合久久噜噜| 在线亚洲午夜片av大片| 日韩av最新在线| 成人免费看片视频| 国产亚洲欧美日韩精品| 亚洲精品美女在线观看播放| 成人精品一区二区三区| 精品久久香蕉国产线看观看亚洲| 亚洲成年人在线播放| 欧美成人免费观看| 国产在线久久久| 7777免费精品视频| 尤物yw午夜国产精品视频明星| 亚洲国产小视频在线观看| 亚洲欧美日韩精品| 亚洲性线免费观看视频成熟| 午夜精品免费视频| 欧美日韩精品在线观看| 日韩免费高清在线观看| 国产精品99久久久久久白浆小说| 国产精品久在线观看| 久久免费高清视频| 久久天天躁狠狠躁夜夜躁| 成人免费福利视频| 日韩精品极品视频免费观看| 亚洲国语精品自产拍在线观看| 欧洲永久精品大片ww免费漫画| 亚洲第一男人av| 成人黄在线观看| 久久久亚洲网站| 日韩成人在线视频| 欧美一区二区影院| 久久综合网hezyo| 国产欧美中文字幕| 亚洲成人精品av| www.美女亚洲精品| 国产一区二区丝袜高跟鞋图片| 国产精品久久久久国产a级| 欧美午夜宅男影院在线观看| 国产亚洲一区二区精品| 好吊成人免视频| 久久亚洲成人精品| 欧美亚洲另类视频| 黑人与娇小精品av专区| 午夜精品久久久久久久久久久久| 欧美一区二区三区图| 国产一区二区三区在线| 成人性生交大片免费看小说| 国产午夜精品美女视频明星a级| 亚洲品质视频自拍网|