【发布时间】:2013-08-01 19:49:04
【问题描述】:
我了解到多重映射是 <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
这里年龄(整数)是键,所以它首先按年龄排序,但如果两个或多个年龄与 BERLIOZ 和 MARIE 相同,则希望在 MARIE 之前打印 BERLIOZ,因为 B 按字母顺序优于 M 。
【问题讨论】:
-
我猜有些编辑像this : struct ltstr { bool operator()(const char* s1, const char* s2) const { return strcmp(s1, s2)
-
贵族们万岁!