(1)使用map/multimap以前必須包含頭文件<map>:#include<map> 而且和全部的關聯式容器同樣,map/multimap一般以平衡二叉樹來完成
(2)
namespace
std{
template
<
class
key,
class
T,
class
Compare = less<key>,
class
Allocator = allocator<pair<
const
key, T> > >
class
map;
template
<
class
key,
class
T,
class
Compare = less<key>,
class
Allocator = allocator<pair<
const
key, T> > >
class
multimap;
}
第一個
template
參數被看成元素的key,第二個看成元素的value。key/value必須具有assignable和copyable性質,對排序而言key必須是comparable。第三個參數爲排序準則,和map/multimap同樣這個排序準則必須是strict weak ordering的,元素的次序由他們的key決定,和value無關,map/multimap根據元素的key自動對元素進行排序。
(3)map/multimap的操做函數:
map c 產生一個空map/multimap
map c(op) 以op爲排序準則產生一個空map/multimap
map c1(c2) 產生某一個map/multimap的副本
map c(beg, end) 以區間[beg, end)內的元素產生一個map/multimap
map c(beg, end, op) 以op爲排序準則,以區間[beg, end)內的元素產生一個map/multimap
c.~map() 銷燬全部元素,釋放內存
其中map可爲下列形式:map<Key, Elem>、map<Key, Elem, op>、multimap<Key, Elem>、multimap<Key, Elem, op>
c.size() 返回當前的元素數量
c.empty() 判斷c是否爲空
c.max_size() 返回可容納的元素最大數值
c1 compare c2 compare可爲==,!=,<,>,<=和>=
c.count(elem) 返回「鍵值等於key」的元素個數
c.find(elem) 返回「鍵值等於key」的第一個元素的迭代器,若是找不到就返回end()
c.lower_bound(key) 返回「鍵值爲key」之元素的第一個可安插位置,也就是「鍵值>=key」的第一個元素位置
c.upper_bound(key) 返回「鍵值爲key」之元素的最後一個可安插位置,也就是「鍵值>key」的第一個元素位置
c.equal_range(key) 返回「鍵值爲key」之元素的第一個和最後一個可安插位置,也就是「鍵值==key」的元素區間
lower_bound()、upper_bound()和equal_range()行爲與set相應的函數十分類似,惟一不一樣的是:元素是一個key/value pair。
c1 = c2 將c2所有元素賦值給c1
c1.swap(c2) 將c1和c2元素互換
c.begin() 返回一個雙向存取迭代器(將key視爲常數),指向第一個元素
c.end() 返回一個雙向存取迭代器(將key視爲常數),指向最後元素的下一個位置
c.rbegin() 返回一個逆向迭代器,指向逆向迭代的第一個元素
c.rend() 返回一個逆向迭代器,指向逆向迭代的最後元素的下一個位置
這裏的元素是一個key/value pair(pair<
const
key, T>)。
c.insert(elem) 插入一個elem副本並返回新元素的位置
c.insert(it, elem) 安插elem副本返回新元素的位置(it是一個提示指出安插操做的搜尋起點)
c.insert(beg, end) 插入區間[beg, end)內的全部元素副本,無返回值
c.erase(elem) 移除「value與elem相等」的全部元素,返回被移除元素的個數
c.erase(it) 移除it位置上的元素,無返回
c.erase(beg, end) 移除[beg, end)區間內的全部元素,無返回
c.clear() 將容器清空