首页 > 代码库 > 第13章 map映照容器

第13章 map映照容器

 

 

 

 

/*  第13章 map映照容器   13.1 map技术原理   13.2 map应用基础   13.3 本章小结*///  第13章 map映照容器//   13.1 map技术原理 ---------------------------------------------------------------------------------//   13.2 map应用基础 ---------------------------------------------------------------------------------//202 [] 插入#include <map>#include <iostream>int main(void){  using namespace std;  //创建map容器对象m  map < const char *, float > m;  //插入元素(水果,单价)  m["apple"] = 3.6f;  m["orange"] = 3.2f;  m["banana"] = 1.8f;  m["pear"] = 2.3f;  m["lichee"] = 6.3f;  //打印元素  cout << "苹果价格: " << m["apple"] << "元/斤\n";  cout << "桔子价格: " << m["orange"] << "元/斤\n";  cout << "香蕉价格: " << m["banana"] << "元/斤\n";  cout << "雪梨价格: " << m["pear"] << "元/斤\n";  cout << "荔枝价格: " << m["lichee"] << "元/斤\n";  return 0;}//203#include <map>#include <iostream>struct StudentInfo{  //学生信息结构体  char *name;  int year;  char *addr;};struct StudentRecord{  //学生记录结构体  int id; //学号,作键值  StudentInfo sf; //学生信息,作映照数据};int main(void){  using namespace std;  //学生数据    StudentRecord srArray[] = {  //3笔学生记录                { 1, "李强", 21, "北京" },                { 2, "王文", 29, "上海" },                { 3, "张三", 38, "深圳" }    };  //创建map容器对象m,管理学生记录  map < int, StudentInfo > m;  //装入3笔学生记录  for(int j = 0; j < 3; j++)    m[srArray[j].id] = srArray[j].sf;  //反向迭代器遍历元素  map < int, StudentInfo > ::reverse_iterator i, iend;  iend = m.rend();  cout << "学号    " << "姓名    " << "年龄    " << "地址    " << endl;  for(i = m.rbegin(); i != iend; i++)    cout << (*i).first <<      << (*i).second.name <<      << (*i).second.year <<           << (*i).second.addr <<      << endl;  return 0;}/*The pair::second element in the pair is set to true if a new element was inserted or false if an element with the same value existed.*///206#include <map>#include <iostream>struct StudentRecord{  //学生记录结构体  struct StudentInfo  {    char *name;    int year;    char *addr;  };  StudentRecord(int id_, char *name_, int year_, char *addr_)  {    id = id_;    sf.name = name_;    sf.year = year_;    sf.addr = addr_;  }  int id; //学号,作键值  StudentInfo sf; //其他信息};int main(void){  using namespace std;  //创建map容器对象m  typedef map < int, StudentRecord::StudentInfo > studentmap;  studentmap m;  pair < studentmap::iterator, bool > p;  //插入第一条学生记录  StudentRecord student1 = StudentRecord(1, "焦焦", 21, "北京");  pair < int, StudentRecord::StudentInfo >     pairStudent1(student1.id, student1.sf);  p = m.insert(pairStudent1);  if(!p.second)    cout << "插入学生记录失败:\n" << student1.id <<      << student1.sf.name <<           << student1.sf.year <<      << student1.sf.addr <<      << endl << endl;  //插入第二条学生记录  StudentRecord student2 = StudentRecord(2, "敦介", 18, "上海");  pair < int, StudentRecord::StudentInfo > pairStudent2(student2.id,    student2.sf);  p = m.insert(pairStudent2);  if(!p.second)    cout << "插入学生记录失败:\n" << student2.id <<      << student2.sf.name <<           << student2.sf.year <<      << student2.sf.addr <<      << endl << endl;  //插入第三条学生记录  StudentRecord student3 = StudentRecord(3, "译尹", 20, "深圳");  pair < int, StudentRecord::StudentInfo > pairStudent3(student3.id,    student3.sf);  p = m.insert(pairStudent3);  if(!p.second)    cout << "插入学生记录失败:\n" << student3.id <<      << student3.sf.name <<           << student3.sf.year <<      << student3.sf.addr <<      << endl << endl;  //插入键值重复的学生记录,失败  StudentRecord student4 = StudentRecord(3, "李强", 26, "天津");  pair < int, StudentRecord::StudentInfo > pairStudent4(student4.id,    student4.sf);  p = m.insert(pairStudent4);  if(!p.second)    cout << "插入学生记录失败:\n" << student4.id <<      << student4.sf.name <<           << student4.sf.year <<      << student4.sf.addr <<      << endl << endl;  //记录搜索  studentmap::iterator i = m.find(2);  cout << "搜索出学号为2的记录:\n" << (*i).first <<      << (*i).second.name <<         << (*i).second.year <<      << (*i).second.addr <<      << endl << endl;  return 0;}//   13.3 本章小结 ---------------------------------------------------------------------------------

 

 

 

 

 

 

TOP

 

第13章 map映照容器