Frage zu einfacher Hash-Tabelle...



  • Hi leute,

    NEUE FRAGE IST UNTEN, das alte zeug ist zum
    Antworten auf die neue Frage vielleicht
    interessant.

    DAS HAB ICH VOHER GESCHRIEBEN / GEFRAGT:
    -----------------------------------------
    hi Leute,
    veileicht kann mir jemand helfen,
    wir haben da eine hash-tabelle (klasse)
    geschrieben und.... tja, schaut selbst

    class 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; 
    }
    

    ALTE FRAGE 1:
    -------------
    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 & ??

    ALTE ANTWORT 1:
    ---------------
    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_hash foo; 
    ... 
    
    foo.suche('o') = 33;
    

    ALTE FRAGE 2:
    -------------
    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

    ALTE ANTWORT 2:
    ---------------

    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.

    NEUE FRAGE (jetzt zur Hash Tabelle selbst):
    -----------------------------------------------------
    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!?

    vielen Dank!
    🙂



  • habs rausgekriegt - bitte nicht mehr antworten 😉


Anmelden zum Antworten