map型別通常被稱為關聯陣列,與正常陣列類似,不同之處在於其下標不必是整數。我們通過乙個關鍵字而不是位置來查詢值(鍵值對)。
與之相對,set就是關鍵字的簡單集合。當只是想知道乙個值是否存在時,set是最有用的。
類似順序容器,關聯容器也是模板,為了定義乙個map,我們必須指定關鍵字和值得型別。例:maptest;乙個test的空map,關鍵字是string、值是int的。sete=;設定關鍵字集合,型別為string。當定義乙個map時,必須指明關鍵字型別又指明值型別;而定義乙個set時,只需指明關鍵字型別,因為set中沒有值。當初始化map時,我們將每個鍵值對包圍在花括號中:。
乙個map或者set中的關鍵字必須是唯一的,即,對於乙個給定的關鍵字,只能有乙個元素的關鍵字等於它。容器multimap和multiset沒有此限制,它們都允許多個元素具有相同的關鍵字。對於有序容器----map、multimap、set、multiset,關鍵字型別必須定義元素比較的方法。預設情況下,標準庫使用關鍵字型別的《運算子來比較兩個關鍵字。在集合型別中(set類),關鍵字型別就是元素型別;在對映型別中(map類),關鍵字型別是元素第一部分的型別。
pair型別:
在介紹關聯容器操作之前,我們需要了解名為pair的標準庫型別,它定義在標頭檔案utility中。乙個pair儲存兩個資料成員,類似容器,pair是乙個用來生成特定型別的模板。——p380 c++ primer 5th。
這裡的知識點一一羅列有點耗時間,直接看書學了p381開始。
關聯容器(map set)(一)
1 關聯容器和順序容器的區別 順序容器的元素是 順序 儲存的 鍊錶容器雖然在記憶體中不是連續儲存,但仍然是按順序儲存的 底層的資料結構是陣列和鍊錶,每個元素含有唯一對應的編號,容器的操作就是按照編號來完成的,對於新增刪除元素是比較高效的,但是對於值查詢 find 來說需要遍歷容器,所以效率比較低。關...
容器 順序容器 關聯容器
容器分為 順序容器 關聯容器,示意圖如下 順序容器 只儲存值,關聯容器 key value形式,關聯容器的乙個元素包含兩個部分 鍵值對 key value 有序容器 底層實現為紅黑樹,即容器內的key是有序的 無序容器 底層實現為hash table,雜湊表 區別 順序容器通過元素在容器中的位置順序...
Map Set和List的一些關聯
三種集合的示意圖如下 一 map和set map集合的key具有的特徵是無序不重複,如果將map的所有key集中起來,那麼這些key就組成了乙個set集合,而且事實就是map集合提供了如下方法來返回所有key組成的集合 可以看出keyset 的返回型別就是set型別的。對於map而言只要把所有的ke...