虽然用其他写法对了,但是还是想请大佬看一下这个map哪里错了
#include<bits/stdc++.h>
using namespace std;
map <string,int> mp;
int n;
struct st{
string na;
int k;
};
struct st a[1000];
void init()
{
cin>>n;
for(int i = 1;i<=n;i++)
{
char a,b;
cin>>a>>b;
while(a!='\n')
{
string name="";
name+=a;name+=b;
map<string,int>::iterator pos=mp.find(name);
if(pos!=mp.end())
{
int zhi=(*pos).second;
mp.erase(pos);
zhi++;
mp.insert(make_pair(name,zhi));
}
else{
mp.insert(make_pair(name,1));
}
cin>>a>>b;
}
}
}
bool cmp(struct st x,struct st y)
{
if(x.k!=y.k) return x.k>y.k;
return x.na<y.na;
}
void chushi()
{
int i = 1;
for(map<string,int>::iterator it=mp.begin();it!=mp.end();it++)
{
a[i].na=(*it).first;
a[i].k=(*it).second;
}
sort(a+1,a+i+1,cmp);
for(int i = 1;i<=16;i++)
{
cout<<a[i].na;
}
}
int main()
{
init();
chushi();
return 0;
}