程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> STL中的map/multimap小結

STL中的map/multimap小結

編輯:C++入門知識

(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()      將容器清空
這裡的元素是一個key/value pair(pair<const key, T>)。

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved