Мне нужно распечатать первые 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