Speicherverschwendung umgehen
-
Bei dem, was in heutigen Rechnern an Speicher steckt, ist es i. d. R. egal, ob
hier und da ein paar Byte "verschwendet" werden. Schon vor dem Hintergrund, dass
die Speicherverwaltung vom OS einem Programm sowieso nur Speicher in fest
definierter Größe (zu Portionen von z.B. 4KB, Stichworte: Paging, virtual
memory) zuweisen kann. Und dann ist es eh egal, ob dein Prog. davon nur 20 Byte
wirklich braucht, oder mal eben so ein paar 100 "verschwendet".Ausserdem heisst enum ja nicht unbedingt, dass es bei 0 zu zählen anfangen muss.
Denkbar wäre es auch denkbar, irgendwelche Bitmasken abzulegentypedef enum { FOO = 0xFF00FF00, BAR, FOOBAR }masks;Sind nur 3 Konstanten, es werden aber trotzdem jeweils 32 Bit benötigt.
-
Swordfish schrieb:
ad 1: Du schreibst dir 'ne eigene Klasse als repräsentation eines bool-Arrays und verwendest jedes Bit deiner Daten als einen bool.
Oder man nimmt einfach std::vector<bool>.
-
Swordfish schrieb:
ad 1: Du schreibst dir 'ne eigene Klasse als repräsentation eines bool-Arrays und verwendest jedes Bit deiner Daten als einen bool.
Dafür gibts Bitsets.
std::vector<bool> ist zwar auch für diesen Fall spezialisiert, allerdings saulahm.
-
@ Walli & Michael E.: *mich_am_kopf_kratz* *kopf_auf_schreibtisch_schleuder* ...

Greetz, Swordfish
-
Swordfish schrieb:
@ Walli & Michael E.: *mich_am_kopf_kratz* *kopf_auf_schreibtisch_schleuder* ...

Greetz, Swordfish
SCNR:
<nelson> haha </nelson>
:p

BR
Vinzenz
-
nelson?
Greetz, Swordfish
-
-
Ah, danke! (Mann bin ich blöd.)
Greetz, Swordfish
-
Enums sind sowieso keine Speicherverschwendung.
Sie verbrauchen ja keinen dynamischen Speicher, da die Werte im binary stehen.
Bei einer Zuweisung bleibt es ja dir überlassen welchem Typ du das enum zuweist.char value = ENUM_VALUE; int intValue = ENUM_VALUE;
-
du meinst also ich kann wenn ich ein enum {OBEN,UNTEN,LINKS,RECHTS}; hab, auf einen char LINKS zuweisen. also:
char a = LINKS; oder hab ich das jetzt falsch verstanden?
-
Ja. Wie sinnvoll das allerdings ist, sei mal dahingestellt.