map翻譯為對映,也是常見的stl容器
在定義陣列時(如int array[100]),其實是定義了乙個從int型到int型的對映
比如array[0]=25、array[4]=36就分別是將0對映到25、將4對映到36
乙個double型陣列則是將int型對映到double型,
如db[0]=3.14,double[1]=0.01
但是,無論是什麼型別
它總是將int型對映到其他型別
這似乎表現出乙個弊端:
當需要以其他型別為關鍵字來做對映時,
會顯得不太方便
例如有一本字典,
上面提供了很多的字串和對應的頁碼,如果要用陣列來表示「字串——>頁碼」這樣的對應關係
就會感覺不太好操作
這時,就可以用到map,因為map可以將任何基本型別
(包括stl容器)對映到任何基本型別(包括stl容器)
也就可以建立string型到int型的對映
【另一種情況】
需要判斷給定的一些數字在某個檔案中是否出現過
按照正常的思路,可以開乙個bool 型hashtable[max_size]
通過判斷hashtable[x]為true還是false來確定x是否在檔案**現
但是這會碰到一種問題:
如果這些數字很大(例如有幾千位)那麼這個數字就會開不了
而這時map就可以派上用場
因為可以把這些數字當成一些字串
然後建立至int的對映(或者直接建立int至int的對映)
【標頭檔案】
#include
using namespace std;
1、map的定義
mapmp;
與其他stl容器在定義上不一樣,因為map需要確定對映前型別(鍵key)和對映後型別(值value)
所以需要在<>內填寫兩個型別
其中乙個是鍵的型別
第二個是值得型別
如果是int型對映到int型,就相當於是普通的int型陣列
但是如果是字串到整型的對映,必須是string而不是char陣列
mapmp
這時因為char陣列作為陣列是不能被作為鍵值的。所以字串作對映,只能用string
而map的劍河之也可以是stl容器
mapmp
2、map容器內元素的訪問
①通過下標訪問
【注意】map的鍵是唯一的
mp[『c』]=20;
②通過迭代器訪問
定義方式與其他stl容器迭代器相同
【不同】
map迭代器的使用方式和其他stl容器的迭代器不同
因為map的每一對對映都有兩個typename
這決定了必須通過乙個it來同時訪問鍵和值
事實上,map可以使用it->first來訪問鍵
使用it->second來訪問值
舉個例子:
#include
#include
#include
#include
using
namespace std;
mapint>x;
//定義乙個以字串為下標,整形為賦值的類陣列
//比如常見的陣列就是 mapa就定義了乙個陣列a以整形為下標以整形為賦值
//也就是 int a[101];
//比如字串mapa就定義了乙個以整形為下標以字串或字元為賦值
//也就是 char a[101]
intmain()
int num,m;
scanf
("%d "
,&m)
;for
(i=1
;i<=m;i++
)for
(i=0
;i)}
map會以鍵的大小從小到大的順序自動排序
即按照a這是因為map內部是使用紅黑樹(set也是)
在建立對映的過程中會自動實現從小到大的排序功能
map的常用用法詳解
map翻譯為對映,也是常用的stl容器。眾所周知,在定義陣列時 如 int array l00 其實是定義了乙個從int型到int型的對映,比如array 0 25 array 4 36就分別是將0對映到25 將4對映到36。乙個 double型陣列則是將int型對映到double型,例如db 0 ...
6 4 map的常用用法
map翻譯為對映,也是常用的stl容器,在使用map時,需要新增map標頭檔案,include。1,map的定義 mapmp,typename1是對映前的型別 鍵key typename2是對映後型別 值value 如 mapmp,是int型對映到int型,另外map的鍵和值也可以是stl容器,例如...
C STL replace 函式常用用法詳解
replace演算法 replace函式包含於標頭檔案 include中。泛型演算法replace把佇列中與給定值相等的所有值替換為另乙個值,整個佇列都被掃瞄,即此演算法的各個版本都在 線性時間內執行 其複雜度為o n 即replace的執行要遍歷由區間 frist,last 限定的整個佇列,以把o...