c 中關聯容器map與set總結

2021-09-10 14:10:16 字數 1623 閱讀 3919

1.set

set分為兩種:unordered_set和set其中unordered_set中的元素儲存是無序的,set中的元素儲存是由序的。兩種set中每個元素只存有乙個key,它支援高效的關鍵字查詢操作。set對應數學中的「集合。

set具有以下的特點:

儲存同一型別的資料元素(這點和vector、queue等其他容器相同)

每個元素的值都唯一(沒有重複的元素)

無法直接修改元素

高效的插入刪除操作

例如:

unordered_seta;
接下來我們看看set中常用的一些函式:

表示式含義

a.begin()

返回指向第乙個元素的迭代器

a.end()

返回指向超尾的迭代器

a.clear()

清空容器a

a.empty()

判斷容器是否為空

a.size()

返回當前容器元素個數

a.count(x)

返回容器a中元素x的個數

a.insert(x)

向a中插入元素x

a.insert(first,second)

其中first為指向區間左側的迭代器,second為指向右側的迭代器。作用是將first到second區間內元素插入到a(左閉右開)

a.erase(x)

刪除建值為x的元素

a.erase(first,second)

刪除first到second區間內的元素(左閉右開)

a.erase(iterator)

刪除迭代器指向的元素

2.map

如果說set對應數學中的「集合」,那麼map對應的就是「對映」。map是一種key-value型容器,其中key是關鍵字,起到索引作用,而value就是其對應的值。與set不同的是它支援下標訪問。標頭檔案是

同樣map也分為unordered_map和map,區別也是乙個裡面的元素為有序,乙個為無序。

map具有以下的特點:

增加和刪除節點對迭代器的影響很小(高效的插入與刪除)

快速的查詢(同set)

自動建立key-value的對應,key和value可以是任何你需要的型別

可以根據key修改value的記錄

支援下標操作

map常用的函式:

m.count(key)

返回map中key出現的次數(0或1)

m.find(key)

返回指向key位置的迭代器.若無則返回m.end()

m.insert(make_pair( ) )

插入乙個元素(必須以pair形式插入)

m.erase(it)

刪除迭代器it所指向的元素

m.erase(key)

刪除鍵值為key的元素

m.size()

返回m中元素的個數

m.clear()

清空m容器

m.empty()

判斷容器是否為空。空則返回true

m.lower_bound(key)

返回指向第乙個鍵值不小於key的元素的迭代器

m.upper_bound(key)

回指向第乙個鍵值大於key的元素的迭代器

C 關聯容器的使用set與map

一 在c 中類似vector封裝陣列,string封裝字元,list封裝了鍊錶,map與set則封裝了二叉樹。其中set與map封裝的二叉樹則是採用的紅黑樹的底層結構的,這種結構與一般的二叉樹的型別有所不同,這種結構的二叉樹更加平衡高效檢索的二叉樹,對存入的資料進行了排序化的儲存。二 1 為什麼ma...

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

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

c 中關聯容器map的使用

補充 使用count,返回的是被查詢元素的個數。如果有,返回1 否則,返回0。注意,map中不存在相同元素,所以返回值只能是1或0。使用find,返回的是被查詢元素的位置,沒有則返回map.end include include include include include using names...