第14章 multimap多重映照容器

/*

  第14章 multimap多重映照容器
   14.1 multimap技术原理
   14.2 multimap应用基础
   14.3 本章小结

*/



//  第14章 multimap多重映照容器
//   14.1 multimap技术原理 ------------------------------------------------------------------------------

//   14.2 multimap应用基础 ------------------------------------------------------------------------------


//212 插入、遍历
#include <map>
#include <iostream>
int main(void)
{
  using namespace std;
  multimap < float, char * > mm;
  mm.insert(pair < float, char * > (3.0f, "apple"));
  mm.insert(pair < float, char * > (3.0f, "pear"));
  mm.insert(pair < float, char * > (2.6f, "orange"));
  mm.insert(pair < float, char * > (1.8f, "banana"));
  mm.insert(pair < float, char * > (6.3f, "lichee"));
  //遍历打印
  multimap < float, char * > ::iterator i, iend;
  iend = mm.end();
  for(i = mm.begin(); i != iend; i++)
    cout << (*i).second << ' ' << (*i).first << "元/斤
";
  cout << endl;
  return 0;
}



//213 反向遍历

#include <map>
#include <iostream>
int main(void)
{
  using namespace std;
  multimap < float, char * > mm;
  mm.insert(pair < float, char * > (3.0f, "apple"));
  mm.insert(pair < float, char * > (3.0f, "pear"));
  mm.insert(pair < float, char * > (2.6f, "orange"));
  mm.insert(pair < float, char * > (1.8f, "banana"));
  mm.insert(pair < float, char * > (6.3f, "lichee"));
  //反向遍历打印
  multimap < float, char * > ::reverse_iterator r_i, r_iend;
  r_iend = mm.rend();
  for(r_i = mm.rbegin(); r_i != r_iend; r_i++)
    cout << (*r_i).second << ' ' << (*r_i).first << "元/斤
";
  return 0;
}



//214
#include <map>
#include <iostream>
struct CourseRecord
{
  //课程记录结构体
  struct CourseInfo
  {
    //课程信息结构体
    char *course; //课程名
    int period; //学时
    char *required; //必修或选修
  };
  char *teacher; //任课教师
  CourseInfo cf; //课程信息
  CourseRecord(char *teacher_, char *course_, int period_, char *required_)
  {
    teacher = teacher_;
    cf.course = course_;
    cf.period = period_;
    cf.required = required_;
  }
};
int main(void)
{
  using namespace std;
  //创建multimap容器对象mm
  typedef multimap < char *, CourseRecord::CourseInfo > coursemmap;
  coursemmap mm;
  //插入第1条记录
  CourseRecord course1 = CourseRecord("王强", "操作系统开发", 60, "必修");
  pair < char *, CourseRecord::CourseInfo > pairCourse1(course1.teacher,
    course1.cf);
  mm.insert(pairCourse1);
  //插入第2条记录
  CourseRecord course2 = CourseRecord("李文", "编译器开发", 30, "必修");
  pair < char *, CourseRecord::CourseInfo > pairCourse2(course2.teacher,
    course2.cf);
  mm.insert(pairCourse2);
  //插入第3条记录
  CourseRecord course3 = CourseRecord("李文", "数据结构", 20, "必修");
  pair < char *, CourseRecord::CourseInfo > pairCourse3(course3.teacher,
    course3.cf);
  mm.insert(pairCourse3);
  //插入第4条记录
  CourseRecord course4 = CourseRecord("李文", "Java开发应用", 38, "选修");
  pair < char *, CourseRecord::CourseInfo > pairCourse4(course4.teacher,
    course4.cf);
  mm.insert(pairCourse4);
  //插入第5条记录
  CourseRecord course5 = CourseRecord("张键", "pascal语言", 26, "选修");
  pair < char *, CourseRecord::CourseInfo > pairCourse5(course5.teacher,
    course5.cf);
  mm.insert(pairCourse5);
  //记录搜索
  cout << "搜索<李文老师>的任课记录:
";
  pair < coursemmap::iterator, coursemmap::iterator > p = mm.equal_range("李文")
    ;
  //打印
  coursemmap::iterator i;
  for(i = p.first; i != p.second; i++)
    cout << (*i).first << '    ' << (*i).second.course << '    ' << (*i)
      .second.period << "学时   " << (*i).second.required << '    ' << endl;
  cout << endl << endl;
  return 0;
}



//215
#include <map>
#include <iostream>
int main(void)
{
  using namespace std;
  multimap < int, char > mm;
  cout << mm.size() << endl; //打印:0
  mm.insert(pair < int, char > (3, 'a'));
  mm.insert(pair < int, char > (3, 'c'));
  mm.insert(pair < int, char > (6, 'f'));
  cout << mm.count(3) << endl; //打印:2
  cout << mm.size() << endl; //打印:3
  return 0;
}




//   14.3 本章小结 ------------------------------------------------------------------------------

TOP

原文地址:https://www.cnblogs.com/xin-le/p/4111466.html