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進行了排列,冒號後面的是...