/*
联合容器multimap事例,用multimap存储城市区号和名称。
知识点:
联合容器,set容器值的类型与关键字相同,map容器值的类型与关键字不同,关键字都是唯一的。
multimap容器与map相似,只是一个关键字可以与多个值关联。
程序输出:
Number of cities with area code 415:2
Number of cities with area code 718:2
Number of cities with area code 510:2
Area Code City
415 San Francisco
415 San Rafael
510 Oakland
510 Berkeley
718 Brooklyn
718 Staten Island
Cities with area code 718:
Brooklyn
Staten Island
*/
#include <iostream>
#include <string>
#include <map>
#include <algorithm>
using namespace std;
typedef int KeyType;
typedef pair<const KeyType, string> MyPair;
typedef multimap<KeyType, string> MapCode;
int main()
{
MapCode codes;
codes.insert(MyPair(415, "San Francisco"));
codes.insert(MyPair(510, "Oakland"));
codes.insert(MyPair(718, "Brooklyn"));
codes.insert(MyPair(718, "Staten Island"));
codes.insert(MyPair(415, "San Rafael"));
codes.insert(MyPair(510, "Berkeley"));
cout<< "Number of cities with area code 415:" << codes.count(415) << endl;
cout<< "Number of cities with area code 718:" << codes.count(718) << endl;
cout<< "Number of cities with area code 510:" << codes.count(510) << endl;
cout << "Area Code City \n";
MapCode::iterator it;
for (it = codes.begin(); it != codes.end(); ++it)
{
cout << " " << (*it).first << " " << (*it).second << endl;
}
pair<MapCode::iterator, MapCode::iterator> range = codes.equal_range(718);
cout << "Cities with area code 718: \n";
for (it = range.first; it != range.second; ++it)
{
cout << (*it).second << endl;
}
getchar();
return 0;
}