1 /* 2 multimap中的三种遍历方法 3 multimap中如果没有查找到相应元素,则返回的迭代器是依据该元素的排列顺序该键应该插入的位置 4 如果找不到,则方法一和方法二返回的两个迭代器应该相等 5 */ 6 #include <iostream> 7 #include <map> 8 #include <string> 9 #include <utility> 10 11 using namespace std; 12 13 int main() 14 { 15 multimap<string, string> mulMap; 16 mulMap.insert(make_pair("鲁迅", "朝花夕拾")); 17 mulMap.insert(make_pair("鲁迅", "阿Q正传")); 18 mulMap.insert(make_pair("鲁迅", "野草")); 19 mulMap.insert(make_pair("罗贯中", "三国演义")); 20 mulMap.insert(make_pair("罗贯中", "隋唐志传")); 21 mulMap.insert(make_pair("琼瑶", "还珠格格")); 22 mulMap.insert(make_pair("琼瑶", "情深深雨蒙蒙")); 23 typedef multimap<string, string>::iterator multiMapItor; 24 //方法一:推荐 25 26 string author("鲁迅"); 27 cout << author << "的书籍有:" << endl; 28 pair<multiMapItor, multiMapItor> pos = mulMap.equal_range(author); 29 while(pos.first != pos.second) 30 { 31 cout << pos.first->second << endl; 32 ++pos.first; 33 } 34 cout << endl; 35 //方法二: 36 author.assign("罗贯中"); 37 cout << author << "的书籍有:" << endl; 38 multiMapItor beg = mulMap.lower_bound(author); 39 multiMapItor end = mulMap.upper_bound(author); 40 while(beg != end) 41 { 42 cout << beg->second << endl; 43 ++beg; 44 } 45 cout << endl; 46 //方法三:不推荐 47 author.assign("琼瑶"); 48 cout << author << "的书籍有:" << endl; 49 typedef multimap<string, string>::size_type sz_type; 50 sz_type entries = mulMap.count(author); 51 multiMapItor itor = mulMap.find(author); 52 for(sz_type cnt = 0; cnt != entries; ++cnt) 53 cout << (itor++)->second << endl; 54 55 system("pause"); 56 return 0; 57 }