как распечатать десятку самых повторяющихся слов из контейнера с ++ - PullRequest
0 голосов
/ 09 мая 2018

Мне нужно распечатать первые 10 самых повторяющихся слов из контейнера. Моя программа печатает все повторяющиеся слова, и когда я ставлю count=10, она печатает первые 10 повторяющихся слов. Но мне нужно напечатать первые 10 самых повторяющихся слов. Какой код мне нужно использовать, чтобы получить наиболее повторяющиеся первые 10 слов.

Требуемый вывод:

            Word     Count
             the      19
               a      14
              of      11
      artificial      11
            that      10
              to       7
          signal       7
             and       7
              in       6
            they       5

Мой код:

// Displays 10 most frequent words in KnownWords
void WordStats::DisplayMostFreqKnownWords(){
    int count;
    multimap<int,string > displayFreqWords; 
    multimap<int,string >::reverse_iterator rit = displayFreqWords.rbegin();        
    for (Paragraph = KnownWords.begin();  Paragraph != KnownWords.end(); 
    ++Paragraph)
    { 
        string word = (*Paragraph).first;
        int cnt = (*Paragraph).second.size();
        displayFreqWords.insert(pair<int,string>(cnt,word)); 
    }
      cout <<"           Word      Count\n";
      for(;rit!=displayFreqWords.rend(); count<=10, ++rit ,  ++count){  
      string word = (*rit).second;
      int cnt = (*rit).first;
      cout << setw(15) << word << setw(10) << cnt << endl;

    }
}

Мой вывод:

       Word     Count
      about         1
  aggregate         1
    another         1
        any         2
   approach         2
  attention         3
    biology         3
      board         4
     common         5
 constitute         5
...