"int&..." was soll das & nach dem int??
-
hi Leute,
veileicht kann mir jemand helfen,
wir haben da eine hash-tabelle (klasse)
geschrieben und.... tja, schaut selbstclass my_hash{ public: my_hash():tabelle(26){ cout<<"angelegt"<<endl; } int& suche(char schluessel){ return tabelle[hashfunktion(schluessel)]; } int hashfunktion(char schluessel){ return(schluessel - 'A'); } private: vector<int>tabelle; }
das Prinzip der hash-tabelle/funktion ist mir klar, aber
was ich nicht verstehe ist das & nach dem int (bei der suche)
"int& suche" was macht dieses & ??als kommentar hab ich damals dazugeschrieben
"anstatt einer set-methode, bzw um hash tabelle auch
zu füllen"
ich hab aber keine ahnung mehr was da abgeht.kann mir jemand helfen?
Vielen Dank
n00b
-
ganz einfach int & ist eine Referenz auf einen int. Du erhälst also keine Kopie des Wertes, sondern die Rückgabe ist tatsächlich das Element im Hash.
my_hahs foo; ... foo.suche('o') = 33;
-
hi nochmal,
wenn ich dann jetzt ein objekt erzeuge:
my_hash xXx;
und abfrage:
xXx.hashfunktion(char k)
was krieb ich dann??
wie kommen denn die werte(zahlen) in die hash-tabelle?
thx
-
xXx.hashfunktion(char k)
was krieb ich dann??
eine Kopie des Wertes, der im Hash steht.
wie kommen denn die werte(zahlen) in die hash-tabelle?
mit deiner suche, so wie ich in meinem Beispiel gezeigt hab.
-
d.h. die tabelle / der vector ist völlig leer bis jemand was darin sucht? und wenn jemand was darin sucht wird der wert (also die zahl) in den hash"vector" geschrieben!? - und ohne das int& ginge das nicht (das reinschreiben)!?
hm, dann ist das aber kein gutes beispiel... wie müsste ich den hash denn umbausen, das in meiner tabelle namen stehen - schlüssel soll der anfangsbuchstabe einer person sein, und jeder anfangsbuchstaben soll nur einmal vorkommen?
da müsst ich erstmal ne set methode einbausen, und den vector auf diese weise befüllen, dann schmeiß ich das int& raus und mach n string hin (verwende dann natürlich auch vector mit strings)... und alles andere kann bleiben!?
thx
n00b