/*
利用stl::multimap查找共同好友 |
利用multimap模版查找共同好友并输出 |
|
要查找的所有记录个数 所有记录 要查找多少人的共同好友 这些人的姓名 |
|
共同好友的全部信息(包括string name;int num;int age;)按照num排序输出,如果没有,输出NO |
|
6 张潮 刘磊 902419 22 王磊 赵磊 902429 22 张潮 张平一 902436 21 李平一 白上由 902422 22 王浩 王洗星 902420 20 王浩 张平一 902436 21 2 张潮 王浩 |
|
张平一 902436 21 |
|
相同好友是指 姓名 学号 年龄 全部相同 |
|
|
|
|
|
|
|
|
|
*/ #include
#include
using namespace std;
typedef struct Info
{
string Name;
int Num;
int Age;
};
int main()
{
multimap match;
multimap forMatch;
string name1;
multimap::iterator it;
multimap::iterator it1;
pair::iterator, multimap::iterator> ret;
Info info1,info2,info0;
int N;
cin>>N;
for (int i=0; i {
cin>>name1>>info0.Name>>info0.Num>>info0.Age;
match.insert(pair(name1,info0));
}
cin>>N;
string Str;
cin>>Str;
int toKey=0;
ret=match.equal_range(Str);
for (it=ret.first; it!=ret.second; ++it)
{
toKey=(*it).second.Num;
(*it).second.Num=1;
forMatch.insert(pair(toKey,(*it).second));
}
for (int i=1; i {
cin>>Str;
ret=match.equal_range(Str);
for(it1=forMatch.begin(); it1!=forMatch.end(); ++it1)
{
for (it=ret.first; it!=ret.second; ++it)
{
if (((*it).second.Name==(*it1).second.Name)&&((*it).second.Num==(*it1).first)&&((*it).second.Age==(*it1).second.Age))
(*it1).second.Num++;
}
}
}
for(it1=forMatch.begin(); it1!=forMatch.end(); ++it1)
{
if ((*it1).second.Num>=N)
cout<<(*it1).second.Name<<" "<<(*it1).first<<" "<<(*it1).second.Age< }
return 0;
}