<key,value>
マルチマップは(マップとは異なり)重複キーを許可するペアであることを学びました。マルチマップを最初にキー(自動的に行われます) でソートし、次に値(つまり名前)でソートするのを手伝ってください。
int main()
{
multimap<int,string>info; // <key,value>
char name[10000];
int age;
//Input till EOF
while (std::cin >> name >> age){
info.insert( pair<int,string>(age,name) );
}
//sorted output according to key i.e age
map<int,string> :: iterator i;
for(i=info.begin(); i !=info.end(); i++)
cout<<(*i).second<<endl;
}
入力:
公爵夫人 26マリー
8
ベルリオーズ 8
トゥールーズ 7
トーマス 28
出力:
トゥールーズ 7
ベルリオーズ 8 マリー
8
公爵夫人 26
トーマス 28
ここでは年齢 (整数) がキーであるため、年齢に関して最初にソートされますが、2 つ以上の年齢が BERLIOZ と MARIE のように同じである場合、B はアルファベット順で M よりも優れているため、BERLIOZ を MARIE の前に出力することが望まれます。