map和set一樣,也是一種關聯容器,內部也是使用紅黑樹作為底層的實現結構。但是不同的是,map的鍵值和實值可以是不一樣的。
map與set的查詢操作本質上是一樣的,沒有特殊的地方。
map使用鍵值排列元素的位置,因而也不允許插入相同鍵值的元素,插入演算法返回pair(iterator,bool),分別指明插入的節點和插入結果。
map與set的刪除操作也是一樣的,都是使用紅黑樹的演算法。
不同於set,map的實值與鍵值是分離的,因而修改實值的操作是允許的,但是鍵值是不允許修改的。
下面對map的基本用法進行簡單的測試,**如下:
map
a;a[1] = "a";
a[5] = "b";
a[7] = "c";
pair value(3,"d");
a.insert(value);
for (map
::iterator iter = a.begin();iter !=a.end();++iter)
map::iterator iter = a.find(8);
if (iter == a.end())
map與set只是滿足不同的需求,但是實現原理是一致的,因而效能方面也是一致的。 STL之關聯容器
1.set單重集合 不允許key重複 set作為乙個容器,也是用來儲存同一資料型別的資料型別,並且能從乙個資料集合中取出資料 c stl中標準關聯容器set,multiset,map,multimap內部採用的就是一種非常高效的平衡檢索二叉樹 紅黑樹 include using namespace ...
STL之關聯容器
關聯容器包含map set multimap multiset。關聯容器的特點是明顯的,相對於順序容器,有如下特點 1 其內部是採用非線性的二叉樹結構,具體的說是紅黑樹的結構原理實現的。2 set和map保證了元素的唯一性,multiset和multimap擴充套件了這一屬性,可以允許元素不唯一。3...
C primer 關聯容器之map
先來一道程式看看吧。程式如下如題目要求是定義乙個map,將單詞與乙個行號的list關聯,list中儲存單詞出現的行號 現在繼續 定義乙個map,將單詞與乙個行號的list關聯,list中儲存單詞出現的行號 其中本來答案中需要in檔案流繫結,我卻用了兩個cin來控制檔案輸入單詞以及行號控制。在這裡需要...