Schreiben Sie ein C++ Programm, das eine txt-Datei (utf-8 Kodiert) öffnet und über einen Filestream alle Wörter einliest
getline
und splitten die Zeile nach Wörtern mit Hilfe der split-Methode von Boost.unordered map
ein, die die Frequenz der Wörter zählen soll.unordered map
in eine nach Häufigkeit sortierte Frequenliste und speichern Sie das Ergebnis in der Datei freq_list.txt
Nun wissen
Sie, dass der Container freq_list
zwar
die Häufigkeit zählt, aber nicht numerisch aufsteigend sortiert ist. Dies können
Sie mit einem Container mulitmap
lösen. Der Trick eine unordered_map
zu sortierten besteht darin alle Elemente mit Ihrer Häufigkeit in einen Container multimap
zu übertragen.
Folgendermaßen können Sie vorgehen:
unordered_map <wstring> freq_list
zusammen mit Ihrer Häufigkeit
in eine multimap<int,wstring>
multimap
nun
die Häufigkeiten sind..
Da eine multimap
immer nach dem Key geordnet ist, müssen
Sie sie nur der Reihe nach ausgeben und schon haben Sie eine sortierte Frequenzliste.
(siehe Script)ordered_map <wstring> freq_list
und stoppen Sie die Zeit des Programms wie in Aufgabe 11. std::chrono::time_point)
, die das Stoppen der Zeit in C++ ermöglicht, siehe: http://en.cppreference.com/w/cpp/chrono