我如何从最高的c ++中对我的代码进行排序?

时间:2015-07-09 11:15:35

标签: c++

嘿,就像小小一样。我有一个c ++语言的程序,我想从最高频率排序。

    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;
}

感谢您的帮助

2 个答案:

答案 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())