C++ map容器用法

給map容器添加元素可通過兩種方式實現(xiàn):

1.通過insert成員函數(shù)實現(xiàn)。

2.通過下標(biāo)操作符獲取元素,然后給獲取的元素賦值。 map對象的訪問可通過下標(biāo)和迭代器兩種方式實現(xiàn):

3.map的下標(biāo)是鍵,返回的是特定鍵所關(guān)聯(lián)的值六剥。

4.使用迭代器訪問晚顷,iter->first指向元素的鍵,iter->second指向鍵對應(yīng)的值疗疟。 使用下標(biāo)訪問map容器與使用下標(biāo)訪問vector的行為截然不同:用下標(biāo)訪問map中不存在的元素將導(dǎo)致在map容器中添加一個新的元素该默,這個元素的鍵即為該下標(biāo)值,鍵所對應(yīng)的值為空策彤。

————————————————————————————————

map的基本操作函數(shù):

???? C++?maps是一種關(guān)聯(lián)式容器栓袖,包含“關(guān)鍵字/值”對

?????begin()?????????返回指向map頭部的迭代器

?????clear()????????刪除所有元素

?????count()?????????返回指定元素出現(xiàn)的次數(shù)

?????empty()?????????如果map為空則返回true

?????end()???????????返回指向map末尾的迭代器

?????equal_range()???返回特殊條目的迭代器對

?????erase()?????????刪除一個元素

?????find()??????????查找一個元素

?????get_allocator()?返回map的配置器

?????insert()????????插入元素

?????key_comp()??????返回比較元素key的函數(shù)

?????lower_bound()???返回鍵值>=給定元素的第一個位置

?????max_size()??????返回可以容納的最大元素個數(shù)

?????rbegin()????????返回一個指向map尾部的逆向迭代器

?????rend()??????????返回一個指向map頭部的逆向迭代器

?????size()??????????返回map中元素的個數(shù)

?????swap()???????????交換兩個map

?????upper_bound()????返回鍵值>給定元素的第一個位置

?????value_comp()?????返回比較元素value的函數(shù)

————————————————————————————————



#include<map>

map<key, value> m;//創(chuàng)建一個名為m的空map對象,其鍵和值的類型分別為key和value店诗。

map<key, value> m(m2);//創(chuàng)建m2的副本m裹刮,m與m2必須有相同的鍵類型和值類型。

map<key, value> m(b,e);//創(chuàng)建map類型的對象m庞瘸,存儲迭代器b和e標(biāo)記的范圍內(nèi)所有元素的副本捧弃,元素的類型必須能轉(zhuǎn)換為pair

//查

m.count(k);// 返回m中鍵值等于k的元素的個數(shù)。

m.find(k);// 如果m中存在按k索引的元素擦囊,則返回指向該元素的迭代器违霞。如果不存在,則返回結(jié)束游標(biāo)end()瞬场。

//刪

//迭代器刪除

iter = m.find("123");

m.erase(iter);

//用關(guān)鍵字刪除

int n = m.erase("123"); //如果刪除了會返回1买鸽,否則返回0

//用迭代器范圍刪除 : 把整個map清空

m.erase(m.begin(), m.end());

//等同于m.clear()


m.erase(k); // 刪除m中鍵為k的元素,返回size_type類型的值贯被,表示刪除元素的個數(shù)眼五。

m.erase(p);? // 從m中刪除迭代器p所指向的元素妆艘,p必須指向m中確實存在的元素,而且不能等于m.end()弹砚,返回void類型双仍。

m.erase(iterator first, iterator last);? // 刪除一個范圍,返回void類型桌吃。

//插入

// 第一種 用insert函數(shù)插入pair

m.insert(pair<int, string>(000, "student_zero"));

// 第二種 用insert函數(shù)插入value_type數(shù)據(jù)

m.insert(map<int, string>::value_type(001, "student_one"));

// 第三種 用"array"方式插入

m[123] = "student_first";

m[456] = "student_second";


m.insert(e) ;

e是一個用在m上的value_type類型的值朱沃。如果鍵e.first不在m中,則插入一個值為e.second的新元素茅诱;如果該鍵在m中已存在逗物,那么不進行任何操作。該函數(shù)返回一個pair類型對象瑟俭,包含指向鍵為e.first的元素的map迭代器翎卓,以及一個bool類型的對象,表示是否插入了該元素摆寄。

m.insert(beg, end);

beg和end是標(biāo)記元素范圍的迭代器失暴,對于該范圍內(nèi)的所有元素,如果它的鍵在m中不存在微饥,則將該鍵及其關(guān)聯(lián)的值插入到m逗扒。 返回void類型。

m.insert(iter, e);

e是value_type類型的值欠橘,如果e.first不在m中矩肩,則創(chuàng)建新元素,并以迭代器iter為起點搜索新元素存儲的位置肃续,返回一個迭代器黍檩,指向m中具有給定鍵的元素。 在添加新的map元素時始锚,使用insert成員可避免使用下標(biāo)操作符帶來的副作用:不必要的初始化刽酱。


//在往map里面插入了數(shù)據(jù),我們怎么知道當(dāng)前已經(jīng)插入了多少數(shù)據(jù)呢瞧捌,可以用size函數(shù)肛跌,用法如下:

int nSize = mapStudent.size();

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市察郁,隨后出現(xiàn)的幾起案子衍慎,更是在濱河造成了極大的恐慌,老刑警劉巖皮钠,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稳捆,死亡現(xiàn)場離奇詭異,居然都是意外死亡麦轰,警方通過查閱死者的電腦和手機乔夯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門砖织,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人末荐,你說我怎么就攤上這事侧纯。” “怎么了甲脏?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵眶熬,是天一觀的道長。 經(jīng)常有香客問我块请,道長娜氏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任墩新,我火速辦了婚禮贸弥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘海渊。我一直安慰自己绵疲,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布臣疑。 她就那樣靜靜地躺著盔憨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪朝捆。 梳的紋絲不亂的頭發(fā)上般渡,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天懒豹,我揣著相機與錄音芙盘,去河邊找鬼。 笑死脸秽,一個胖子當(dāng)著我的面吹牛儒老,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播记餐,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼驮樊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了片酝?” 一聲冷哼從身側(cè)響起囚衔,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎雕沿,沒想到半個月后练湿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡审轮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年肥哎,在試婚紗的時候發(fā)現(xiàn)自己被綠了辽俗。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡篡诽,死狀恐怖崖飘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情杈女,我是刑警寧澤朱浴,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站碧信,受9級特大地震影響赊琳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜砰碴,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一躏筏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧呈枉,春花似錦趁尼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至啃憎,卻和暖如春芝囤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背辛萍。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工悯姊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贩毕。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓悯许,卻偏偏與公主長得像,于是被迫代替她去往敵國和親辉阶。 傳聞我的和親對象是個殘疾皇子先壕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容