C 關聯容器map的簡單使用

2021-10-08 13:14:53 字數 2079 閱讀 9698

一、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值是唯一的。集合中的元素按一定的順序排列。元素插入過程是按排序規則插入,...