一、map容器的定義
map是stl的乙個關聯容器,它是乙個單對映容器。它提供一對一(其中第乙個可以稱為關鍵字,每個關鍵字只能在map**現一次,第二個可能稱為該關鍵字的值)的資料處理能力,由於這個特性,它完成有可能在我們處理一對一資料的時候,在程式設計上提供快速通道。這裡說下map內部資料的組織,map內部自建一顆紅黑樹(一種非嚴格意義上的平衡二叉樹),這顆樹具有對資料自動排序的功能,所以在map內部所有的資料都是有序的,後邊我們會見識到有序的好處。下面舉例說明什麼是一對一的資料對映比如乙個班級中,每個學生的學號跟他的姓名就存在著一一對映的關係,這個模型用map可能輕易描述。
二、map容器的構造
它有兩種構造方式:
1、預設的構造
std::map<
int> map1;
2、區間的構造
std::map<
int>
map4
(arr, arr+len)
;
一、插入
map共有三種插入方式:
1、通過pair物件
2、value_type
3、map[key] = value;
int
main()
二、刪除
map的刪除共有三種方式
(1)erase(_first,_last);//刪除區間的元素
(2)erase(_where);//刪除位置上的元素
(3)erase(key);//刪除關鍵字
三、查詢
通過迭代器的方式進行查詢。
首先在map中獲得迭代器型別生成迭代器物件,然後通過map容器的begin介面來迭代起始位置的元素。然後通過while迴圈進行處理。具體實現,如下所示:
std::map<
int,
int>
::iterator it = mymap.
begin()
;while
(it != mymap.
end())
如下圖所示:
一一對映關係。map對應的迭代器不能直接*處理。它對應得frist域直接列印鍵域,通過second列印出值域。
map是乙個單對映容器,它要求裡面得鍵值是不能重複得。它的優點是一對一的對映,有基於關鍵字的快速查詢方式。
multimap是乙個多重對映容器,它允許裡面的鍵值可以重複。它的優點是可以允許資料重複,也有基於關鍵字的快速查詢方式。
利用map容器和multimap容器實現乙個簡單的學生類
需要注意的是如果以這樣的方式map[key] = value
進行插入的時候。value如果是物件,就必須在value對應的類中提供預設的建構函式。
c 中關聯容器map的使用
補充 使用count,返回的是被查詢元素的個數。如果有,返回1 否則,返回0。注意,map中不存在相同元素,所以返回值只能是1或0。使用find,返回的是被查詢元素的位置,沒有則返回map.end include include include include include using names...
C 關聯容器的使用set與map
一 在c 中類似vector封裝陣列,string封裝字元,list封裝了鍊錶,map與set則封裝了二叉樹。其中set與map封裝的二叉樹則是採用的紅黑樹的底層結構的,這種結構與一般的二叉樹的型別有所不同,這種結構的二叉樹更加平衡高效檢索的二叉樹,對存入的資料進行了排序化的儲存。二 1 為什麼ma...
C 關聯容器之map
認識map map型別通常被稱為關聯陣列,關聯陣列與 正常 陣列類似,不同之處在於其下標不必是整數。map是標準的關聯式容器,乙個map是乙個鍵值對序列,即 key,value 對。它提供基於key的快速檢索能力。map中key值是唯一的。集合中的元素按一定的順序排列。元素插入過程是按排序規則插入,...