STL之六 map multimap用法詳解

2022-09-03 08:39:11 字數 3376 閱讀 1074

**於:

使用map/multimap之前要加入標頭檔案#include,map和multimap將key/value當作元素,進行管理。它們可根據key的排序準則自動將元素排序。multimap允許重複元素,map不允許重複元素。

map和multimap內部的資料結構也是平衡二叉樹。

map和multimap根據元素的key自動對元素進行排序,要修改元素的key必須先刪除擁有該key的元素,然後插入擁有新的key/value的元素。

map m:建立空對映,不包含任何元素

map m(op):以op為排序準則,產生乙個空的map

map m1(m2):複製c2中的元素到c1中

map m(const value_type *first, const value_type* last):複製[first, last)之間元素構成新對映

map m(const value_type *first, const value_type* last,op):以op為排序準則,複製[first, last)之間元素構成新對映。

m.~set()銷毀所有元素,釋放記憶體

multimap mm:建立空對映,不包含任何元素

multimap mm(op):以op為排序準則,產生乙個空的multimap

multimap m1(m2):複製m2中的元素到m1中

multimap m(const value_type *first, const value_type* last):複製[first, last)之間元素構成新對映

multimap m(const value_type *first, const value_type* last,op):以op為排序準則,複製[first, last)之間元素構成新對映

m.~multimap()銷毀所有元素,釋放記憶體

#include "stdafx.h"

#include #include using namespace std;

bool fncomp (char lhs, char rhs)

int size() const:返回容器元素個數

bool empty() const:判斷容器是否空,若返回true,表明容器已空。

iterator insert(const value_type& x):插入元素x

mapmapstudent;

mapstudent.insert(pair

(1, 「student_one」));

mapmapstudent;

mapstudent.insert(map

::value_type (1, 「student_one」));

iterator insert(iterator it,const value_type& x):在迭代指標it處插入元素x

void insert(const value_type *first,const value_type* last):插入[first, last)之間元素

iterator erase(iterator it):刪除迭代指標it處元素

iterator erase(iterator first,iterator last):刪除[first, last)之間元素

size_type erase(const key& key):刪除鍵值等於key的元素

#include "stdafx.h"

#include #include using namespace std;

int main ()

map::iterator it = mymap.begin();

mymap.insert(it,pair('b',300));

mymap.insert(it,pair('c',400));

mapanothermap;

anothermap.insert(mymap.begin(),mymap.find('c'));

cout<

for (it = mymap.begin();it!= mymap.end();it++)

cout<

for (it = anothermap.begin();it!= anothermap.end();it++)

return 0;

}

上述**執行結果為

}上述**執行結果為:

如果想往map/multimap中修改乙個對映的值,應先插入乙個新對映,再把與修改的對映刪除。

iterator begin():返回首元素的迭代器指標

iterator end():返回尾元素的迭代器指標

reverse_iterator rbegin():返回尾元素的逆向迭代器指標

reverse_iterator rend():返回首元素前乙個位置的迭代器指標

const_iterator lower_bound(const key& key):返回鍵值大於等於key的迭代器指標

const_iterator upper_bound(const key& key):返回鍵值大於key的迭代器指標

int count(const key& key) const:返回鍵值等於key的元素的個數

pairequal_range(const key& key) const:返回容器中鍵值等於key的迭代指標[first, last)

const_iterator find(const key& key) const:查詢功能,返回鍵值等於key的迭代器指標

void swap(set& s):交換但對映元素

void swap(multiset& s):交換多對映元素

reference operator(const key& k):僅在但對映map類中,可以以陣列的形式給對映新增鍵-值對,並可返回值的引用。

STL系列之六 set與hash set

stl系列之六 set與hash set set和hash set是stl中比較重要的容器,有必要對其進行深入了解。在stl中,set是以紅黑樹 rb tree 作為底層資料結構的,hash set是以hash table 雜湊表 作為底層資料結構的。set可以在時間複雜度為o logn 情況下插入...

STL系列之六 set與hash set

stl系列之六 set與hash set set和hash set是stl中比較重要的容器,有必要對其進行深入了解。在stl中,set是以紅黑樹 rb tree 作為底層資料結構的,hash set是以hash table 雜湊表 作為底層資料結構的。set可以在時間複雜度為o logn 情況下插入...

STL系列之六 set與hash set

stl系列之六 set與hash set set和hash set是stl中比較重要的容器,有必要對其進行深入了解。在stl中,set是以紅黑樹 rb tree 作為底層資料結構的,hash set是以hash table 雜湊表 作為底層資料結構的。set可以在時間複雜度為o logn 情況下插入...