C STL容器學習總結之八 對映map

2021-09-12 12:53:19 字數 3002 閱讀 2669

>>>c++stl容器學習總結之一:向量vector<<<

>>> c++stl容器學習總結之二:鍊錶list<<<

>>>c++stl容器學習總結之三:雙端佇列deque<<<

>>>c++stl容器學習總結之四:佇列queue<<<

>>>c++stl容器學習總結之五:優先佇列priority_queue<<<

>>>c++stl容器學習總結之六:棧stack<<<

>>>c++stl容器學習總結之七:集合set<<<

map是鍵-值對的集合,map中的所有元素都是pair,可以使用鍵作為下標來獲取乙個值。map中所有元素都會根據元素的值自動被排序,同時擁有實值value和鍵值key,pair的第一元素被視為鍵值,第二元素被視為實值,同時map不允許兩個元素有相同的鍵值。

mapmapstring;      mapmapint;

mapmapstring;       map< char ,string>mapchar;

mapmapchar;            mapmapint;

給map容器新增元素可通過兩種方式實現:

通過insert成員函式實現。

通過下標操作符獲取元素,然後給獲取的元素賦值。 map物件的訪問可通過下標和迭代器兩種方式實現:

map的下標是鍵,返回的是特定鍵所關聯的值。

使用迭代器訪問,iter->first指向元素的鍵,iter->second指向鍵對應的值。 使用下標訪問map容器與使用下標訪問vector的行為截然不同:用下標訪問map中不存在的元素將導致在map容器中新增乙個新的元素,這個元素的鍵即為該下標值,鍵所對應的值為空。

如:

mapmaplive;  

1.maplive.insert(pair(102,"aclive"));

2.maplive.insert(map::value_type(321,"hai"));

3, maplive[112]="april"; /map中最簡單最常用的插入新增!

find()函式返回乙個迭代器指向鍵值(就是鍵,值在這裡叫做實值)為key的元素,如果沒找到就返回指向map尾部的迭代器。 

map::iterator l_it;; 

l_it=maplive.find(112);

if(l_it==maplive.end())

cout<

map::iterator l_it;;

l_it=maplive.find(112);

if(l_it==maplive.end())

cout<

for example:

#include #include using namespace std;

int main( )

執行結果

map中的元素是自動按key公升序排序,所以不能對map用sort函式:

for example:

#include #include using namespace std;

int main( )

{ map m1;

map ::iterator m1_iter;

m1.insert ( pair ( 1, 20 ) );

m1.insert ( pair ( 4, 40 ) );

m1.insert ( pair ( 3, 60 ) );

m1.insert ( pair ( 2, 50 ) );

m1.insert ( pair ( 6, 40 ) );

m1.insert ( pair ( 7, 30 ) );

cout << "the original map m1 is:"

c++ maps是一種關聯式容器,包含「關鍵字/值」對

begin()          返回指向map頭部的迭代器

clear()         刪除所有元素

count()          返回指定元素出現的次數

empty()          如果map為空則返回true

end()            返回指向map末尾的迭代器

equal_range()    返回特殊條目的迭代器對

erase()          刪除乙個元素

find()           查詢乙個元素

get_allocator()  返回map的配置器

insert()         插入元素

key_comp()       返回比較元素key的函式

lower_bound()    返回鍵值》=給定元素的第乙個位置

max_size()       返回可以容納的最大元素個數

rbegin()         返回乙個指向map尾部的逆向迭代器

rend()           返回乙個指向map頭部的逆向迭代器

size()           返回map中元素的個數

swap()            交換兩個map

upper_bound()     返回鍵值》給定元素的第乙個位置

value_comp()      返回比較元素value的函式

對於map容器,使用其下標行為一次訪問一系列的相同型別的元素,則可以將這個過程理解為構造了這些元素的乙個雜湊表,以統計輸入單詞的出現次數為例:

mapword_count;

string word;

while(cin>>word)

++word_count[word]; // 相當於生成了乙個雜湊表word_count

簡單的說,就是鍵(本例中為string)會被作為陣列的下標,值(本例中為int)則為該下標所對應的陣列元素的值

C STL常用容器總結之八 對映map

map是鍵 值對的集合,map中的所有元素都是pair,可以使用鍵作為下標來獲取乙個值。map中所有元素都會根據元素的值自動被排序,同時擁有實值value和鍵值key,pair的第一元素被視為鍵值,第二元素被視為實值,同時map不允許兩個元素有相同的鍵值。要使用map物件,必須包含map的標頭檔案 ...

C STL通用容器 之 對映

常用的對映類是 map,multimap 各個容器中,僅儲存著一樣東西,但是在對映中將會得到兩樣東西 關鍵字以及作為對關鍵字進行查詢得到的結果值,即一對值。map單對映中key與value是一對一的關係,multimap多對映中key與value可以是一對多的關係。1 建構函式 map constp...

C STL容器總結篇之map

map是stl的乙個容器,和set一樣,map也是一種關聯式容器。它提供一對一 其中第乙個可以稱為關鍵字,每個關鍵字只能在map 現一次,第二個可能稱為該關鍵字的值 的資料處理能力,由於這個特性,有助於我們處理一對一資料。這裡說下map內部資料的組織,map內部是自建一顆紅黑樹 一種非嚴格意義上的平...