/*
第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 << "元/斤\n";
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 << "元/斤\n";
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 << "搜索<李文老师>的任课记录:\n";
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 本章小结 ------------------------------------------------------------------------------