map是一種映射,是常用的STL容器。(map可以將任何基本類型(包括STL容器)映射到任何基本類型(包括STL容器))
如需使用,需要加一個(gè)map頭文件。
1.map的定義:
mapmp;
使用map要確定映射前類型(鍵key)和映射后的類型(值value)。
注意:如果是字符串到整形的映射,必須使用string而不是char數(shù)組。
例子:
(1)mapmp;
2.map容器內(nèi)元素的訪問:
(1)通過下標(biāo)訪問:
比如:
mapmp;
mp[‘c’]=20;
mp[‘c’]=30;
printf(“%d”,m[‘c’])輸出的是30;
(2)通過迭代器訪問:
定義方式:
map::iterator it;
map迭代器的使用方式和其他STL容器的迭代器不同,因?yàn)閙ap的每一對(duì)映射都有兩個(gè)typename,這決定了必須能通過一個(gè)it來同時(shí)訪問鍵和值。事實(shí)上,map可以使用it->first來訪問鍵,使用it->second來訪問值。
3.map常用函數(shù)實(shí)例解析:
(1)find()
find(key)返回鍵為key的映射的迭代器,時(shí)間復(fù)雜度為N(logN),N為map中映射的個(gè)數(shù)。
(2)erase()
erase有兩種用法:
第一種:刪除單個(gè)元素,刪除一個(gè)區(qū)間內(nèi)的所有元素。
刪除單個(gè)元素的方法==》mp.erase(it),it為刪除的元素的迭代器,時(shí)間復(fù)雜度為O(1)。
mp.erase(key),key為欲刪除的鍵。時(shí)間復(fù)雜度為O(logN),N為map內(nèi)元素的個(gè)數(shù)。
第二種:刪除一個(gè)區(qū)間內(nèi)的所有元素。
mp.erase(firse,last)刪除[first,last).
時(shí)間復(fù)雜度O(last-first)
(3)size()
size()用來獲得map中映射的對(duì)數(shù),時(shí)間復(fù)雜度為O(1)。
(4)clear()
clear()用來清空map中的所有元素,復(fù)雜度為O(N),其中N為map中的元素的個(gè)數(shù)。
4.map的常見用途:
1.需要建立字符(或字符串)與整數(shù)之間映射的題目,使用map可以減少代碼量。
2.判斷大整數(shù)或者其他類型數(shù)據(jù)是否存在的題目,可以把map當(dāng)bool數(shù)組用。
3.字符串和字符串的映射有時(shí)候也會(huì)遇到!