码迷,mamicode.com
首页 > 其他好文 > 详细

第13章 map映照容器

时间:2014-11-20 21:38:17      阅读:308      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   os   sp   for   strong   

 

 

 

 

/*

  第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映照容器

标签:style   blog   io   ar   color   os   sp   for   strong   

原文地址:http://www.cnblogs.com/xin-le/p/4111417.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!