STL中的map使用

2021-07-31 23:24:06 字數 1980 閱讀 8507

set(集合)——包含了經過排序了的資料,這些資料的值(value)必須是唯一的。

map (對映)——經過排序了的二元組的集合,map中的每個元素都是由兩個值組成,其中的key(鍵值,乙個map中的鍵值必須是唯一的)是在排序或搜尋時使用,它的值可以在容器中重新獲取;而另乙個值是該元素關聯的數值。

map和set的底層都通過紅黑樹來實現的,紅黑樹現在不談,有機會在整。

1 map.erase(k):刪除

map中鍵為

k的元素。返回size_type型別的值,表示刪除的元素個數;

2 map.erase(p):從

map中刪除迭代器

p所指向的元素。p必須指向map中確實存在的元素,而且不能等於map.end(),返回 void型別;

3 map.erase(b,e):從map中刪除一段範圍內的元素,該範圍由迭代器對b和e標記。

說map有序表示的是它按照一種排序方式排序,這種排序方式並不是我們常用的按照先後順序排。我們可以選擇一種自定義的排序方式,這種排序方式是按照我們定義的插入函式來插入的。

map插入資料的兩種方式比較

pairinsert(const value_type & x)

1.1如果之前容器中沒有

key值就直接插入,注意插入函式的返回值,pair中第乙個引數表示的是要插入元素的迭代器,第二個引數為true;

1.2如果之前容器中有

key值,插入結果是pair中第乙個引數表示的重複元素的迭代器,而第二個引數為false

pairret;

ret= maptest.insert(make_pair(1,"3"));

if(ret.sencond)

t& operator(const key_type &k)  

int a=1, b=2;  

couttypedefmapcollectionmapt;

struct snode

//在定義的結構中過載operator < 操作符

bool operator < (const snode&other) const

return id//也可以定義仿函式

struct compsort{

bool operator()(const snode&left,const snode &right)

return left.idtypedefmapcollectionmapsnodet;

typedef mapcollectionmapsnode2t;

int main()

collectionmapsnodet  nodemap;

nodemap.insert(make_pair(snode("123","hahaha"),"thefirst"));

nodemap.insert(make_pair(snode("12","hahaha"),"thesecond"));

nodemap.insert(make_pair(snode("1","hahaha"),"thethird"));

collectionmapsnode2t  nodemap2;

nodemap2.insert(make_pair(snode("123","hahaha"),"thefirst"));

nodemap2.insert(make_pair(snode("12","hahaha"),"thesecond"));

nodemap2.insert(make_pair(snode("1","hahaha"),"thethird"));

collectionmapsnodet::iteratorit=nodemap.begin();

for(;it!=nodemap.end();++it)

coutfor(;it2!=nodemap.end();++it2)

cout

stl中map的使用

map與set類似,都是乙個關聯式容器,但是與set不同的是他鍵值分離的,key,value 結構,在map結構中元素是不允許重複的。在學習的過程中,我們需要主要一些問題 就是在關聯式容器中,當資料很大的時候,使用其中的查詢演算法是很快速的,應該使用其提供的函式來實現查詢函式等等高,會比使用stl中...

STL中map的巢狀使用

最近開發中要用到stl,然後自己檢視了一些資料,並寫了一些 在使用中,想起了如果是map巢狀,該如何應用呢?下面是我的coding內容 對於傳統的map,我們只需要 include include int main return 0 結果輸出 100 maxi 200 xiaoma 300 xiao...

STL中map的使用詳解

map本質上乙個平衡二叉樹 更準確地說是紅黑樹 那麼每個節點存放乙個資料,預設是key和value打包成乙個資料pair,以pair的形式存放在節點的,由此來看,pair裡面可以放任何資料,前提是pair必須可以比較大小,當然也可以自定義比較函式,而map的第三個引數就是指定自定義key的比較函式的...