1 #include <iostream> 2 #include <string> 3 #include <map> 4 #include <algorithm> 5 using namespace std; 6 7 typedef int KeyType; //typedef 为现有类型创建别名 ,定义易于记忆的类型名 为一种数据类型定义一个新名字 8 typedef std::pair<const KeyType,std::string>Pair; //定义pair对象 9 typedef std::multimap<KeyType,std::string>MapCode; //定义multimap对象 10 //multimap中的key是可以重复的,而普通map中的key不可以重复 11 int main() 12 { 13 MapCode codes; 14 codes.insert(Pair(415,"San Francisco")); //插入数据 15 codes.insert(Pair(510,"Oakland")); 16 codes.insert(Pair(718,"Brooklyn")); 17 codes.insert(Pair(718,"Staten Island")); 18 codes.insert(Pair(415,"San Rafael")); 19 codes.insert(Pair(510,"Berkeley")); 20 21 cout<<"number of cities with area code 415: "<<codes.count(415)<<endl; //415的个数 22 cout<<"number of cities with area code 718: "<<codes.count(718)<<endl; //718的个数 23 cout<<"number of cities with area code 510: "<<codes.count(510)<<endl; //510的个数 24 cout<<"Area Code City "; 25 26 MapCode::iterator it; //iterator 迭代器 提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节 27 for(it=codes.begin();it!=codes.end();++it) //begin()开始,end()结尾 28 cout<<" "<<(*it).first<<" "<<(*it).second<<endl; //(*t).first代表第一个值,(*t).second代表第二个值 29 30 pair<MapCode::iterator,MapCode::iterator> range=codes.equal_range(718); //equal range 获取相等元素的子范围 31 cout<<"cities with area code: "; 32 for(it=range.first;it!=range.second;++it) //pair::first是指向子范围左边界的迭代器 pair::last是指向子范围右边界的迭代器 33 cout<<(*it).second<<endl; 34 system("pause"); 35 return 0; 36 }