Zitat von
Christian Seehase:
Zitat von
shmia:
Ein set of char benötigt im Speicher 256 bit = 32 Bytes.
woher hast Du denn das?
Eine Menge kann aus maximal 256 Elemente bestehen deren Wert zwischen 0 und 255 liegen muss, also belegt so ein Set maximal 256 Byte.
Zum Speichern der Information, ob ein Element in einer Menge enthalten ist oder nicht,
wird lediglich
ein Bit benötigt.
Die Position des Bits gibt an, welches Element gesetzt ist.
Beispiel:
Delphi-Quellcode:
type
TFarben = (rot, gruen, blau); // Aufzählungstyp mit 3 Elementen (intern als 0-2 gespeichert)
TFarbenSet = Set of TFarben;
// für 3 Elemente werden 3 Bit benötigt; es wird auf die nächste Byte- oder Wortgrenze aufgerundet
// sizeof(TFarbenSet) gibt Auskunft
var
farben, farben2 : TFarbenSet;
begin
farben := []; // wird intern als 0b00000000 gespeichert
farben := [gruen, blau, rot]; // wird intern als 0b00000111 gespeichert
farben2 := [rot]; // wird intern als 0b00000001 gespeichert
farben := farben + farben2; // intern wird 0b00000111 OR 0b00000001 berechnet
if blau in farben then ; // intern wird berechnet: (farben AND 0b00000010) <> 0