Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » SGI hash_map: Eigene Hash-funktion

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
13.10.2006, 14:10 Uhr
~grimmel
Gast


Hallo,
ich verstehe nicht ganz wie ich bei einer hash_map auf den seiten von sgi eine eigene hash funktion implementieren soll für mein hash...?
hier mal die seiten:
www.sgi.com/tech/stl/hash_map.html
www.sgi.com/tech/stl/hash.html

ich würde gerne so eine map haben:

hash_map<int, myStruct, <meine hash_function???>, eqint> h_map;

im komme mit dem hash<T> net so ganz klar...

muss ich evtl. hash<T> irgendwie overloaden oder sowas?

Danke für jeden Hinweise/HIlfe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.10.2006, 14:41 Uhr
~grimmel
Gast


Ich versuche es so aber es geht so nicht:




C++:
struct MyHash
{
    int operator()(const int key)
    {
        int ret = 0;
        ret = static_cast<int> (fabs(key));
        return ret;  
    }
};

struct eqint
{
    bool operator()(int d1, int d2) const
    {
        return  d1 == d2;
    }
};
...

hash_map<int, double, MyHash, eqint> hash;

hash[0] = 2.9;



ich bekomme folgene meldung:

Code:

/usr/include/c++/3.3/ext/stl_hashtable.h:514: error: passing `const MyHash' as `this' argument of `int MyHash::operator()(int)' discards qualifiers



kann so leider net wirklich viel mit der meldung anfangen...
wieso const MyHash?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
13.10.2006, 14:56 Uhr
~grimmel
Gast


das myStruct muss so aussehen:

C++:
struct MyHash
{
    int operator()(const int key) const
    {
        int ret = 0;
        ret = static_cast<int> (fabs(key));
        return ret;  
    }
};



falls jemand zeit und lust hast mir das hintere const bei der zeile:
int operator()(const int key) const
zu erklären - gerne...ich google mal...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
13.10.2006, 20:38 Uhr
Spacelord
Hoffnungsloser Fall


Das hintere const ist ne Zusage dass der Zustand des Objekts ,für das die Methode aufgerufen wird,nicht verändert wird.
Jeder Versuch innerhalb einer const Methode Attribute des aufrufenden Objekts zu ändern wird vom Compiler angeprangert(ausser diese Attribute sind mutable).

Gruß Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: