map的原理和使用

1.原理

map: map內部實現了一個紅黑樹,該結構具有自動排序的功能,因此map內部的所有元素都是有序的,紅黑樹的每一個節點都代表着map的一個元素,因此,對於map進行的查找,刪除,添加等一系列的操作都相當於是對紅黑樹進行這樣的操作,故紅黑樹的效率決定了map的效率。

2.使用

a.查找是否存在
my_Map::iterator my_Itr;
my_Itr.find(“b”);
int j = my_Itr->second;
my_Itr->second = j; (注:鍵是不能被修改的,但是可以刪除)
b. 刪除
(1) my_Map.erase(my_Itr);(注:迭代期間不能刪除)
(2) my_Map.erase(“c”);
c.插入
(1) my_Map[“a”] = 1;
(2) my_Map.insert(map<string, int>::value_type(“b”,2));
(3) my_Map.insert(pair<string,int>(“c”,3));
(4) my_Map.insert(make_pair<string,int>(“d”,4));
d.其他
my_Map.size() 返回元素數目
my_Map.empty() 判斷是否爲空
my_Map.clear() 清空所有元素

3.評價

優點:
有序性,這是map結構最大的優點,其元素的有序性在很多應用中都會簡化很多的操作
紅黑樹,內部實現一個紅黑書使得map的很多操作在的時間複雜度下就可以實現,因此效率非常的高
缺點:
空間佔用率高,因爲map內部實現了紅黑樹,雖然提高了運行效率,但是因爲每一個節點都需要額外保存父節點,孩子節點以及紅/黑性質,使得每一個節點都佔用大量的空間
適用處,對於那些有順序要求的問題,用map會更高效一些

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章