map类型中的所有元素都是pair类型,pair类型顾明思议就是成对存在的类型。比如 pair < string, string > StudentTom ( " StudentID ", " StudentName "),定义了一个成对存在的一个Student,第一个值为学号,第二个值为学生姓名。第一个又被称键,第二个称为值,两个成对存在。并且这种定义不局限于string类,其他类型也可以。map类型就相当于有一系列pair类型的数据。
map类型的定义:map < string, string > StudentList;
初始化: StudentList. insert ( map<string,string>::value_type("001","Brown"));
最常用操作函数:
begin() 返回指向map头部的迭代器
end() 返回指向map末尾的迭代器
下面是利用map类型完成学号绑定姓名,完成插入,查找,遍历,删除的程序
1 /*利用map类型完成学号绑定姓名,完成插入,查找,遍历,删除*/ 2 #include<iostream> 3 #include<string> 4 #include<map> 5 using namespace std; 6 7 void map_insert(map<string, string>*mapStudent, string ID, string name) 8 { 9 mapStudent->insert(map<string, string>::value_type(ID,name)); 10 }; 11 int main() 12 { 13 map<string, string>mapS; 14 //插入同学 15 map_insert(&mapS,"001","Brown"); 16 map_insert(&mapS, "002", "Cony"); 17 map_insert(&mapS, "003", "Tom"); 18 19 //查找同学 20 map<string, string>::iterator iter; 21 iter = mapS.find("003"); 22 if (iter != mapS.end()) 23 { 24 cout << "找到该同学"; 25 cout << iter->second << endl << endl; 26 } 27 else 28 { 29 cout << "没找到该同学"<<endl; 30 } 31 32 //查看所有同学(遍历) 33 for (iter = mapS.begin(); iter != mapS.end(); iter++) 34 { 35 cout << endl<< iter->first << iter->second << endl; 36 } 37 38 //删除某同学 39 iter = mapS.find("003"); 40 if (iter != mapS.end()) 41 { 42 cout <<endl<< "删除的同学为"; 43 cout << iter->second << endl; 44 mapS.erase(iter); 45 } 46 else 47 { 48 cout << "没找到该同学"; 49 50 } 51 for (iter = mapS.begin(); iter != mapS.end(); iter++) 52 { 53 cout << iter->first << iter ->second<< endl; 54 } 55 56 getchar(); 57 return 0; 58 59 60 }
原文:https://www.cnblogs.com/wuhongjian/p/11519980.html