Hashes in C
-
Hi.
für jede mögliche Bitfolge in einem Byte gibt es eine Strutkur, insgesamt also 256 Strukturen. Ich moechte diese Strukturen in einem Array speichern, sodass die Zahl die ein Byte ergeben kann als Index zur dazugehoerigen Struktur fuehrt.
struct schar pStruct[256]; while (c = getc(STREAM)) { pStruct[c] ...; }
Moechte ich 'c' so verwenden, muss 'pStruct' immer 256 Elemente enthalten, auch wenn ich vielleicht nur 28 davon brauche. In letzterem Fall wuerde ich gerne fuer nur 28 Elemente Speicher reservieren, und trotzdem eine einfache Zugriffsmoeglichkeit auf die richtige Struktur haben.
Spontan wuerde ich ein Hash/Assoziatives Array verwenden, sowas gibt es in C aber nicht.
Mir faellt beim besten Willen keine Moeglichkeit ein, wisst ihr etwas. Ich freue mich ueber jede Hilfe,Gruss,
caspar
-
offsets?
du definierst ein 28 elemente großes array und beim einlesen musst du vorher wissen, was das kleinste 'c' sein wird und betrachtest es fortan als null, also für alles weitere von dem gelesenen 'c' dieses kleinste c abziehen.
entweder hast du dein wirkliches problem ziemlich gut vereinfacht oder aber du musst unter wirklichen speicherengpässen arbeiten. überleg, ob die mehrkosten/overhead von hashlisten, assoziativen arrays oder dieser "offset" methode wirklich den aufwand wert sind.