int main()
{
std::map<std::string,int> words;
std::ifstream fin("potop.txt");
std::string s;
std::string empty ="";
while((s=getNextToken(fin))!=empty )
++words[s];
int a=0;
for(std::map<std::string,int>::iterator iter = words.begin(); iter!=words.end()&&a<20; ++iter,++a)
std::cout<<iter->first<<' '<<iter->second<<std::endl;
}
感谢您的帮助
答案 0 :(得分:0)
使用多重映射来反转键/值对:
std::multimap<int,std::string> sortedmm;
for(std::map<std::string,int>::iterator iter = words.begin(); iter != words.end(); iter++)
{
sortedmm[iter->second] = iter->first;
}
现在迭代(已经排序)
for(std::multimapmap<int,std::string>::iterator iter2 = sortedmm.rbegin(); iter != sortedmm.rend(); iter++)
std::cout<<iter2->first<<' '<<iter2->second<<std::endl;
答案 1 :(得分:-1)
您可以使用sort
中的algorithms
开头和结尾地址rbegin
&amp; rend
。它将按递减顺序对其进行排序
等
sort(yourMap.rbegin(), yourMap.rend())