Wortliste <set> soll Zählen

Guntpat1981

Mitglied
Hallo zusammen,

ich habe einige Schwierigkeiten mit der Programmierung folgender Aufgabe.
Ziel ist es, Wörter aus einer Textdatei zu lesen und in ein Objekt einer Klasse Wort einzulesen, welches die Wörter in einem String - Attribut verwaltet.
Nun soll in den Objekten der Klasse Wort noch das Vorkommen (sprich Anzahl) der Wörter aufgelistet werden, aber ich weiß nicht, wie ich die Wörter hochzählen kann.

Code - Beispiel:

class Wort {

private:
string wortstring;
int anzahl;
.......usw.
};
---------------------------------------------------------------------------------------
ifstream infile ( fname.c_str() );
MySet dictionary; //dies ist ein Typedef von mir - hier wird der Container set angelegt
std::pair< MySet::iterator, bool > success; //pair wird angelegt

while ( !infile.eof() ) {
Wort wort;
infile>>wort; //funktioniert, weil istream>> operator überladen
success = dictionary.insert(wort); //wort wird in set abgelegt
if( !success.second)
cout<<"\nWort "<<*success.first << " schon vorhanden!\n";

//an dieser Stelle möchte ich meinen Zähler aus der Klasse Wort inkrementieren, um herauszufinden, wie oft ein Wort vorkommt. Das Problem ist, dass in meinem Konstruktor die Anzahl am Anfang immer auf 1 gesetzt wird, was dazu führt, dass am Ende in all meinen Wörterobjekten nur eine 1 steht.

Ich hoffe, ihr könnt mir helfen und versteht mein Problem.

Viele Grüße,
Patrick
 
Einfacher wäre es, wenn du eine std::map<std::string, int> verwenden würdest, mit den gefundenen Wörtern als Key und dem int als zu inkrementierenden Zähler. Die Wort-Klasse wäre dann nicht nötig.

Prinzipiell ist es problematisch, in einem Set einen Wert zu ändern, weil dadurch die Sortierung des Sets gestört werden könnte.
 
Zurück