Eftersom jag är nyfiken. Jag kan erkänna att jag inte är bäst på c++ utan det var längesedan jag satt med det nu. Det är mycket möjligt att det på ett väldigt enkelt sätt går att göra detta:
Låt oss ta det enkla exemplet som dök upp innan som någons läxa/lab.
Ta en fil med ord som är separerade med mellanslag. Läs in filen, gruppera orden sedan skriv ut dem i en fil i ordning hur ofta de förekommer (samt siffran hur ofta).
Resultatlfil ser ut såhär:
the 53871
and 33695
of 30652
And 12237
to 11864
in 10915
that 10862
he 8581
shall 8471
...osv
Detta exemplet var på hela gutenbergs bibel
http://www.gutenberg.org/etext/10
För enkelhetensskull så kör vi en enkel split på mellanslag vilket gör att man inte får exakta resultat, men nära nog. Annars är de bara att köra med regex.split och ignorecase etc. men det orkar jag inte bry mig om nu.
Kod:
var result = from word in File.ReadAllText(@"d:\test.txt").Split(' ')
group word by word into g
orderby g.Count() descending
select g;
StringBuilder sb = new StringBuilder();
foreach(var r in result)
{
sb.AppendLine(r.Key + " " + r.Count());
}
File.WriteAllText(@"d:\result.txt", sb.ToString());
Denna koden tog ca 0.7 sek att köra.