C 中 map 的基本操作和巢狀map的使用

2021-08-20 17:21:42 字數 2631 閱讀 6228

c++中map容器提供乙個鍵值對容器,map與multimap差別僅僅在於multiple允許乙個鍵對應多個值。本文主要總結一下map基本用法和巢狀用法示例。

一、map基本用法

1   標頭檔案 

#include   

2   定義 

mapmy_map; //注意這裡的int和int可以是其他型別

或者是typedef     mapmy_map; 

my_map   my_map; 

3   插入資料 

(1)   my_map[1]   =   1; 

(2)   my_map.insert(map::value_type(2,2)); 

(3)   my_map.insert(pair(3,3)); 

(4)   my_map.insert(make_pair(4,4)); 

4   查詢資料和修改資料 

(1)   int   i   =   my_map[1]; 

my_map[1]   =   i; 

(2)   my_map::iterator   my_itr; 

my_itr.find(2); 

int   j   =   my_itr->second; 

my_itr->second   =   j; 

注意:a.鍵本身是不能被修改的,除非刪除。 

b.不管鍵存不存在,比如my_map[1]   =   i;,都會執行賦值操作。

5   刪除資料 

(1)   my_map.erase(my_itr); 

(2)   my_map.erase(3); 

6   遍歷資料 

for   (my_itr=my_map.begin();   my_itr!=my_map.end();   ++my_itr)   {} 

7   其它方法 

my_map.size() :返回元素數目 

my_map.empty():判斷是否為空 

my_map.clear() :清空所有元素 

二、巢狀用法

1.示例如下:

[cpp]

view plain

copy

map<

int,map<

int,

int> >multimap; 

//對於這樣的map巢狀定義,  

map, int

> temp;    

//定義乙個map變數,對其定義後在插入multimap  

temp[9] = 9;    

temp[10] = 10;    

multimap[10] = temp;    

multimap[10][11]=11;     

multimap[5][30]=30;    

map,map<

int,

int> >::iterator multitr;  

// 以下是如何遍歷本multimap  

map,int

>::iterator intertr;    

for(multitr=multimap.begin();multitr!=multimap.end();multitr++)    

2.也可以這樣:

[cpp]

view plain

copy

map<

int,map<

int,

int>* >multimap;  

map, int

>* temp = 

newmap<

int, 

int>;  

multimap[10]=temp;  

這樣動態new記憶體,就要記得delete,否則會有記憶體洩露,delete如下:

[cpp]

view plain

copy

map<

int, 

int>* temp1;  

for(multitr=multimap.begin();multitr!=multimap.end();multitr++)    

map的巢狀特別注意:

1,對於 std::map(std::string, std::map) 這個型別的賦值和插入方法

std::mapneimap;

std::map> waimap;

std::string group = "groupp";

waimap[group] = neimap;

std::string key = "keyy";

std::string value = "valuee";

waimap[group].insert(std::make_pair(key.c_str(), value.c_str()));

注意必須用:waimap[group].insert(std::make_pair(key.c_str(), value.c_str())); 給內層的map賦值(make_pair中的std::string要寫作char型別),否則,在有些編譯器下是編譯不過的。

C 使用 C 中map的基本操作和用法

在閱讀ssd 中發現作者使用了c 中的map方法,因此搜尋該關聯式容器的使用方法,在這裡一併總結。map是stl的乙個容器,它提供一對一的hash。map以模板 泛型 方式實現,可以儲存任意型別的變數,包括使用者自定義的資料型態。map主要用於資料一對一對映 one to one 的情況,map內部...

C 使用 C 中map的基本操作和用法

在閱讀ssd 中發現作者使用了c 中的map方法,因此搜尋該關聯式容器的使用方法,在這裡一併總結。map是stl的乙個容器,它提供一對一的hash。map以模板 泛型 方式實現,可以儲存任意型別的變數,包括使用者自定義的資料型態。map主要用於資料一對一對映 one to one 的情況,map內部...

C 使用 C 中map的基本操作和用法

在閱讀ssd 中發現作者使用了c 中的map方法,因此搜尋該關聯式容器的使用方法,在這裡一併總結。map是stl的乙個容器,它提供一對一的hash。map以模板 泛型 方式實現,可以儲存任意型別的變數,包括使用者自定義的資料型態。map主要用於資料一對一對映 one to one 的情況,map內部...