高深的應用我們這一篇先不講,先從簡單的來談起,什麼是MAP,MAP是幹啥用的,啥時機用,大概就講這些。
MAP是什麼 ?
Map是C++標準庫的一個class,為眾多容器之一,他提供了Search 和 insert 友善的資料結構,並具備一對一mapping的功能,而什麼是一對一 ? 你想像一下,在求學的時候,你剛進學校,老師就會給你打一個編號 (學號),比如說9527好了,打完後,從學期初到你離開這個班級前,你就是9527,9527就是你了。
這就是一對一,Eric就是9527,9527就是Eric。
在Map裡面,有兩個重要的參數 :
First 和 Second
First就是關鍵字 (Key),而Second就是Value(值),套入上面的舉例,在老師的點名簿裡面會有一行是 9527.Eric,然後,這邊只有一個重點,就是Key絕對不會重複,畢竟,你沒有看過老師用學號點名的時候,突然有兩隻手舉起來過吧 ?
Map的特色
Map的內部資料結構是一顆紅黑樹 (red-black-tree)(這個我們改天在詳談),因此呢 :
1.
內部是有排序的資料,這個就代表你呢,插入的Key的順序可以是 1 3 5 7 9 2 4 6 8 0 ,
然後到時候一個回圈,從第一個output到最後一個,你會發現,順序會自己變成 0 1 2 3 4 .... 9
2.
對於Search 和 insert 操作很快 (O(logn))
-----------------------------------------------------------------------------------------------
[結論]
1.可以修改value,但是不能修改key (你可以改名字,但是你不能擺脫9527這個編號)。
2.以模板方式實現,可以儲存任意類型的變數,包括使用者自定義的資料型態。
-----------------------------------------------------------------------------------------------
接下來,大家就看Code理解就可以了,
有點基礎的朋友應該很快就能理解了。