C 中簡單的map應用

2021-08-09 12:15:10 字數 3069 閱讀 9463

map是c++提供的可以將關鍵字和該關鍵字的值(key-value)一對一聯絡起來並進行操作的乙個容器。基本操作有新增,修改,查詢,刪除。下面簡單說明這三種操作的實現方式。

宣告map

#include //一定要有;

using

namespace

std;

map f;//map中資料型別可以是任意的。

新增

map的新增有兩種,一種是類似陣列一樣的操作。

mymap1[5] = 124;

mymap1[4] = 3;

mymap2["hello"] = 1;

mymap3[3] = 'n';

如果key-value關係在map中存在,那麼新增後會覆蓋原來的value。

第二種是用insert函式。

mymap1.insert(map

:: value_type(1, 123));

mymap1.insert(map

:: value_type(2, 12));

mymap2.insert(map

:: value_type(1, "hello"));

mymap3.insert(map

:: value_type('a', 12));

如果key-value關係在map中存在,則不會覆蓋。換句話說,相當於沒有新增。

查詢

查詢和新增對應的都有兩種方法。

第一種仍然是類似於陣列的查詢,這一般是查詢某個key對應的value是多少。

mymap[4] = 3;

mymap.insert(map

:: value_type(2, 12));

int x = mymap[18];//沒有新增。

int y = mymap[4];

int z = mymap[2];

cout

<< x << ' '

<< y << ' '

<< z << endl;

上述**的輸出為

0 3 12
就是說,在查詢的key-value關係不存在時,預設輸出的是初始化的值

第二種是利用find、end函式查詢,一般是查詢某個key存不存在。

int find = 5, finds = 133;

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

map :: iterator iter = mymap.find(finds);

if(it != mymap.end()) cout

<< "yes"

<< endl;

else

cout

<< "no"

<< endl;

if(iter != mymap.end()) cout

<< "yes"

<< endl;

else

cout

<< "no"

<< endl;

輸出為

yes

no

類似於指標,容易理解。

如果某個key-value的value就是初始值,那麼單一的查詢判斷不出來是否存在。這時候可以先用find查詢key是否存在,存在在查詢value。

修改

修改很簡單,新增的第一種方法可以覆蓋新增。

那麼就可以先查詢某個對應關係是否存在,如果存在就覆蓋新增

當然,也可以直接覆蓋,如果原來不存在就相當於新增。

刪除

用find函式和erase函式。

map

:: iterator it = mymap.find(find);

if(it != mymap.end()) cout

<< "yes"

<< endl;

else

cout

<< "no"

<< endl;

//map :: iterator del = mymap.find(5);

if(del != mymap.end())

//map :: iterator iter = mymap.find(find);

if(iter != mymap.end()) cout

<< "yes"

<< endl;

else

cout

<< "no"

<< endl;

輸出結果為

yes

deleted

no

總的**:

#include 

#include

using

namespace

std;

map mymap;

int main()

map :: iterator iter = mymap.find(find);

if(iter != mymap.end()) cout

<< "yes"

<< endl;

else

cout

<< "no"

<< endl;

//刪除;

return

0;}

輸出:

[new thread 5616.0x1670]

0 3 12

1221423

yesyes

deleted

no[inferior 1 (process 5616) exited normally]

map容器簡單應用

需要按照編號將一組資料排序顯示,我一下子就想到了容器。以前曾經用過map,所以還是用map來實現吧。之前,完整地看完了 c 標準程式庫 並且也讀過侯捷老師的 stl原始碼剖析 對容器的特性和使用有了一點印象 我沒有經常應用,不敢說非常熟悉 網上有勤奮好學的前輩們總結的好文章 這兒 有一篇,是關於ma...

react中map的應用

當需要遍歷陣列時,特別是需要遍歷多個陣列時,我們就可以封裝函式,從而提高 的復用率,還要注意兩點哦,1.陣列的map可以進行遍歷,需要加唯一的key值,2.封裝成函式的話,記得內部需要加return關鍵字!當為多個陣列時。var arr a b c var arr2 d e f 封裝函式 funct...

map函式和lambda函式的簡單應用

lambda是乙個匿名函式,他的用法我們直接進行展示 de lambda x x 2這時候de就是乙個函式,可以向裡面傳引數,進行輸出 print de 5 結果為 2.5其實更多是用來排列陣列如 a 1 2,3 5,4 a.sort key lambda x x 這樣就把a進行了排列,冒號後面的是...