multiMap遍历方法

来源:互联网 发布:java设计模式场景 编辑:程序博客网 时间:2024/06/05 19:09
 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 }