STL中的關聯式容器 map(對映)

2021-10-09 10:21:46 字數 1460 閱讀 9645

map,即「對映」。map是關聯容器的一種,具體實現採用了紅黑樹的平衡二叉樹的資料結構。它提供一對一(其中第乙個稱為關鍵字key,每個關鍵字只能在map**現一次,第二個稱為該關鍵字的值value)的資料處理能力,由於這個特性,它完成有可能在我們處理一對一資料的時候,在程式設計上提供快速通道。由於是利用了紅黑樹實現,因此可以快速插入key-value記錄和快速刪除記錄。

並且對於迭代器來說,可以修改value,而不能修改key,而且它根據key修改value記錄,因此增加和刪除節點對迭代器的影響很小,除了那個操作節點,對其他的節點都沒有什麼影響。

map是c++ stl的乙個重要成員,使用它時需要包含標頭檔案:

#include

; //包含了map和multimap兩種容器的定義

有以下方式,舉例說明如下:

map<

int,string> a;

map<

int,string>

b(a)

;//拷貝佇列a給佇列b

列舉如下:

a.

insert()

;//插入元素

a.erase()

;//刪除乙個元素

a.find()

;//查詢乙個元素

a.clear()

;//刪除所有元素

a.empty()

;//如果map為空則返回true

a.count()

;//返回指定元素出現的次數

a.size()

;//返回map中元素的個數

a.max_size()

;//返回可以容納的最大元素個數

a.swap()

;//交換兩個map

可以有以下幾種方式,列舉如下:

struct cmp1};

struct cmp2};

struct node1};

struct node2};

map<

int,string>q1;

//採用預設優先順序構造佇列,最小值優先

map<

int,string,cmp1>q2;

//最大值優先

map<

int,string,cmp2>q3;

//最小值優先

map<

int,string,greater<

int>

>q4;

//最大值優先

//注意「>>」會被認為錯誤,因為這是右移運算子,所以這裡用空格號隔開

map<

int,string,less<

int>

>q5;

//最小值優先

mapq6;

//最大值優先

mapq7;

//最小值優先

STL關聯容器之map

map和set一樣,也是一種關聯容器,內部也是使用紅黑樹作為底層的實現結構。但是不同的是,map的鍵值和實值可以是不一樣的。map與set的查詢操作本質上是一樣的,沒有特殊的地方。map使用鍵值排列元素的位置,因而也不允許插入相同鍵值的元素,插入演算法返回pair iterator,bool 分別指...

關聯式容器 map

map的特性是,所有元素都會根據元素的鍵值自動被排序。map的所有元素的型別都是pair,而map的底層就是一顆紅黑樹。它不同set的是,它既有是鍵值 key 排序根據key排序,鍵值保持唯一性,它還具有實值 value pair既pair的first為key,second為value。我們不能修改...

STL 關聯式容器 Set與Map的用法

c 的標準模板庫 簡稱stl 是乙個容器和演算法的類庫。容器往往包含同一型別的資料。set是一種關聯式容器,其特性如下 定義乙個元素為整數的集合a,可以用 seta 基本操作 對集合a中元素的有 插入元素 a.insert 1 刪除元素 如果存在 a.erase 1 判斷元素是否屬於集合 if a....