map函式常用用法

2021-10-16 13:46:01 字數 1973 閱讀 5827

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...