/* 第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 本章小结 ------------------------------------------------------------------------------