STL之map和multimap總結

2021-07-23 23:35:32 字數 3441 閱讀 9701

map c //預設建構函式;建立乙個空map/multimap  

map c(op) //建立乙個空map/multimap,並以op原則作為排序準則

map c(c2) //複製建構函式;建立乙個新的map/multimap

//作為c2的副本(所有元素都被複製)

map c = c2 //複製建構函式;建立乙個新的map

//作為c2的副本(所有元素都被複製)

map c(rv) //移動建構函式;使用右值物件rv建立乙個新map/multimap

map c = rv //移動建構函式;使用右值物件rv建立乙個新map/multimap

map c(beg,end) //建立乙個map/multimap,並使用

//beg到end範圍內的值進行初始化

map c(beg,end,op) //建立乙個map/multimap,

//並使用beg到end範圍內以op原則排序後的值進行初始化

map c(initlist)

//建立乙個map/multimap,並使用初始化列表進行初始化

map c = initlist

//建立乙個map/multimap,並使用初始化列表進行初始化

c.~map() //銷毀所有元素並釋放記憶體

map

//以less<>為排序準則的map

map//以op為排序準則的map

multimap

//以less<>為排序準則的multimap

multimap

//以op為排序準則的multimap

c.key_comp() //返回比較準則  

c.value_comp() //返回對值比較的標準 (與key_comp()相同)

c.empty() //判斷容器是否為空,與size()==0相同,但可能更快

c.size() //返回當前元素數量

c.max_size() //返回可容納的元素最大數量

c1 == c2 //判斷c1與c2是否相等

c1 != c2 //判斷c1與c2是否不相等,等同於!(c1==c2)

c1 < c2 //判斷c1是否小於c2

c1 > c2 //判斷c1是否大於c2

c1 <= c2 //判斷c1是否小於等於c2

c1 >= c2 //判斷c1是否大於等於c2

c.count(key) //返回鍵值為key的元素個數  

c.find(key) //返回第乙個鍵值為key的位置,若沒找到返回end()

c.lower_bound(key) //返回鍵值為key的第乙個可插入的

//位置,也就是鍵值 >= key的第乙個元素位置

c.upper_bound(key) //返回鍵值為key的最後乙個可插入的位置,

//也就是鍵值 > key的第乙個元素位置

c.equal_range(key) //返回鍵值為key的可插入的第乙個位置和最後乙個位置的區間,

//也就是鍵值 == key的元素區間

c = c2 //將c2所有元素賦值給c  

c = rv //將右值物件rv的所有元素移動賦值給c

c = initlist //使用初始化列表進行賦值

c1.swap(c2) //交換c1和c2的數

swap(c1,c2) //交換c1和c2的數

c.begin() //返回乙個雙向迭代器,指向第乙個元素  

c.end() //返回乙個雙向迭代器,指向最後乙個元素

c.cbegin() //返回乙個雙向常迭代器,指向第乙個元素

c.cend() //返回乙個雙向常迭代器,指向最後乙個元素

c.rbegin() //返回乙個逆向迭代器,指向逆向迭代的第乙個元素

c.rend() //返回乙個逆向迭代器,指向逆向迭代的最後乙個元素

c.crbegin() //返回乙個逆向常迭代器,指向逆向迭代的第乙個元素

c.crend() //返回乙個逆向常迭代器,指向逆向迭代的最後乙個元素

c.insert(val) //插入乙個val的副本,返回新元素位置(對map來說不論成功與否)  

c.insert(pos,val) //插入乙個val副本,返回新元素位置(pos應該是插入的搜尋起點)

c.insert(beg,end) //將範圍beg到end的所有元素的副本插入到c(無返回值)

c.insert(initlist) //插入初始化列表的所有元素的副本(無返回值)

c.emplace(args...) //插入乙個使用args初始化的元素副本,返回新元素位置(對map來說不論成功與否)

c.emplace_hint(pos,args...) //插入乙個使用args初始化的元素副本,返回新元素

//位置(pos應該是插入的搜尋起點)

c.erase(val) //移除所有與val值相等的元素,並返移除的元素個數

c.erase(pos) //移除迭代器位置的元素,並返回下個元素的位置

c.erase(beg,end) //移除beg到end範圍內的所有元素,並

//返回下個元素的位置

c.clear() //移除所以元素,清空容器

//使用value_type  

std::map

coll;

coll.insert(std::map

::value_type("otto",22.3));

//使用pair<>

std::map

coll;

coll.insert(std::pair("otto",22.3));

//使用make_pair()

std::map

coll;

coll.insert(std::make_pair("otto",22.3));

c[key] //返回乙個指向鍵值為key的元素的引用,如果不存在就插入這個元素  

c.at(key) //返回乙個指向鍵值為key的元素的引用

#include 

#include

#include

#include

#include

using

namespace

std;

/**

map集合的插入和遍歷

*/int main()

return

0;

}

STL之map容器和multimap容器

所有元素都會根據元素的鍵值自動排序。map所有的元素都是pair,同時擁有實值和鍵值,pair的第一元素被視為鍵值,第二元素被視為實值,map不允許兩個元素有相同的鍵值。map的鍵值關係到map元素的排列規則,任意改變map鍵值將會嚴重破壞map組織。如果想要修改元素的實值,那麼是可以的。map和l...

STL之map容器和multimap容器

所有元素都會根據元素的鍵值自動排序。map所有的元素都是pair,同時擁有實值和鍵值,pair的第一元素被視為鍵值,第二元素被視為實值,map不允許兩個元素有相同的鍵值。map的鍵值關係到map元素的排列規則,任意改變map鍵值將會嚴重破壞map組織。如果想要修改元素的實值,那麼是可以的。map和l...

日常學習 STL之map

對map最初的印象,源於王建德老師在山東noip夏令營上那銷魂的一句 map,i,j 音 嘜頗,挨,傑 ruka上對map並沒有講很多,ty菌說map主要用來寫雜湊 雖然她曾用它寫過鄰接矩陣 迴圈巢狀map intorz 而李晨和里奧甚至表示基本不用map。但是既然有這一項奇妙的東西,想必是有用的,...