assoziative Arrays in ANSI-C ?
-
Hallo!
Gibt es in ANSI-C assoziative Arrays oder etwas vergleichbares?
...und wenn ja, wie macht man das?Mir schwebt so etwas in der Art vor:
Array["Test"] = 5;
Danke schonmal!
Gruß
Dennis
-
Hi,
du kannst enums benutzen:
enum arraynamen { text_bla, //ich hab nummer 0 soundso, //ich hab nummer 1 anzahl_elemente //ich hab nummer 2 }; int a[arraynamen]; a[text_bla]=500; a[soundso]=1000;
Viele Grüße,
Mata
-
ah, da ist mir doch ein licht aufgegangen...
Danke!
aber muß das nicht so aussehen?
enum _arraynamen { text_bla, //ich hab nummer 0 soundso, //ich hab nummer 1 anzahl_elemente //ich hab nummer 2 } arraynamen;
Oder hab ich da was falsch verstanden
-
dn schrieb:
aber muß das nicht so aussehen?
Nein. Das von mata deklariert einen Typ namens 'enum arraynamen'. Deins deklariert 'enum _arraynamen' und eine Variable dieses Typs, die 'arraynamen' heißt.
-
hm, ok... aber warum bekomme ich dann in der Zeile
int a[arraynamen];
diesen Fehler wenn ich es so mache wie ihr vorschlagt:
error: `arraynamen' undeclared (first use in this function)
-
wobei ich grade sehe, das ich natürlich blödsinn geschrieben habe, das anlegen des arrays geht so:
int a[anzahl_elemente];
das legt ein int array mit 2 elementen an, a[0] und a[1].
Viele Grüße,
mata
-
da war ich 10 sekunden zu langsam
-
ah, jetzt ergibts für mich sinn!
jetzt hab ich aber noch eine kleine frage:
was mache ich denn wenn ich erst zur laufzeit weiß wie die schlüssel für mein array heißen sollen?
(ich will schlüssel und werte aus einer datenbank in den array lesen!)
-
Dann musst du dir wohl eine Funktion schreiben, die die Zuordnung verwaltet. Du musst dir also in einem zusätzlichen Array merken welcher Text zu welchem Index gehört.
-
Guck dir mal das Hash-Verfahren an (Hash-Table). Das ist ein Verfahren, um assoziative Arrays zu implementieren.