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...