C++语言基础 —— STL —— 容器与迭代器 —— map 与 multimap
【概述】
map 和 multimap?是映射數據容器,兩者均定義與 <map> 頭文件中,其所有元素都是 pair,pair 的第一個元素被視為鍵值,第二個元素為實值。
他們是基于某一類型 Key 的鍵集的存在,提供對 TYPE 類型的數據進行快速和高效的檢索,具體實現采用了一顆紅黑樹的平衡二叉樹的數據結構,這顆樹具有對數據自動排序的功能,所以在 map 內部所有的數據 Key 都是有序的。
map 和 multimap 對象包涵了鍵和各個鍵有關的值,鍵和值的數據類型可以是不相同的。
兩者的不同在于,map 不允許有重復鍵值,而 multimap 允許重復鍵值。
【定義】
定義:map <type1, type2> mapName、multimap <type1, type2> multimapName
- map<type1,type2> m:產生一個空的 map/multimap,其中不含任何元素
- map<type1,type2>?m(op):以 op 為排序準則,產生一個空的 map/multimap
- map<type1,type2>?m1(m2):產生某個 map/multimap 的副本,所有元素均被復制
- map<type1,type2>?m(beg, end):以迭代器區間 [beg; end] 內的元素產生一個 map/multimap
- map<type1,type2>?m(beg, end, op)::以 op 為排序準則,以迭代器區間 [beg; end] 內的元素生成一個map/multimap
【基本操作】
對于 map<type> m?的基本操作有:
- m.size():返回容器大小
- m.empty():返回容器是否為空
- m.clear():清空容器
- m.count(key):返回鍵值等于?key?的元素的個數
- m.erase(elem):移除鍵值為?elem?的所有元素,返回個數,對?map?來說非?0?即?1
- ?m[key] = value:查找的時候若沒有鍵值為?key?的元素,則插入一個鍵值為?key?的新元素,實值為默認值(一般為?0)
- m.insert(elem):用于插入元素,其有三種形式
1)運用 value_type 插入:
? ? ? map<string, float> m;
? ? ? m.insert(map<string, float>:: value_type ("Robin", 22.3));
2)運用 pair<>:
? ? ? m.insert(pair<string, float>("Robin", 22.3));
3)運用 make_pair():
? ?? ?m.insert(make_pair("Robin", 22.3));
【迭代器操作】
對于?map<type> m?的迭代器 it 的操作有:
- m.begin():返回一個雙向迭代器,指向第一個元素
- m.end():返回一個雙向迭代器,指向最后一個元素的下一個位置
- m.erase(it):移除迭代器 it?所指位置上的元素,并返回指向下一個元素對的迭代器
- m.lower_bound(key):返回鍵值等于?key?的元素的第一個可安插的位置
- m.upper_bound(key):返回鍵值等于key的元素的最后一個可安插的位置
總結
以上是生活随笔為你收集整理的C++语言基础 —— STL —— 容器与迭代器 —— map 与 multimap的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 混合牛奶(洛谷-P1208)
- 下一篇: C++语言基础 —— STL —— 容器