map為一對一的映射,映射方式以鍵值(Key)與資料(Value)進行一對一的對應,以鍵值(Key)去搜尋所代表的資料(Value),不允許鍵值(Key)重複,在插入鍵值與資料到map時,會檢查是否已經有相同鍵值存在集合內,若鍵值相同則不會進行插入該元素,會回傳相同鍵值在map所在位置的迭代器(iterator)。插入鍵值與資料時,map會將鍵值與資料插入到map所指定的位置,讓map的鍵值呈現已排序狀態,讓搜尋、插入與刪除資料有較好的效率。map是以資料結構的二元搜尋樹(binary search tree)進行實作。
map所提供的重要函式
map程式範例--在map中新增與讀取元素
範例說明
請實作一個程式將(a,97)、(b,98)、(c,99)、(d,100)依序加入map中,使用find找出字元c所在位置的迭代器(iterator),並使用erase刪除字元c與對應的數值99,並使用迴圈、迭代器(iterator)與遞增運算子(++),顯示map中所有元素到螢幕。
範例程式如下
map預設是遞增排序,若要改成遞減排序,需要在宣告時就告知是遞減排序,使用函式物件(function object)的「greater<key>」,第一個鍵值是否大於第二個鍵值,宣告成「map<key,value,greater<key> >」,就會變成由大到小排序,注意最後兩個大於中間要插入一個空白鍵,與輸入時所使用的「>>」能夠區分開來。
將map改成遞減排序
範例說明
請實作一個程式將(a,97)、(b,98)、(c,99)、(d,100)依序加入map中,使用遞減排序,並使用迴圈、迭代器(iterator)與遞增運算子(++),顯示map中所有元素到螢幕。
範例程式如下