Hallo Neg,
so elegant der Weg mit dem Mengen-Konstrukt auch scheint, so wenig lässt sich in der von Delphi vorgenommenen Implementierung die Deklaration
Delphi-Quellcode:
var
SchonVerwendet: Set of integer;
compilieren.
Hintergrund: Bei einem Set wird für jedes mögliche Element genau ein Bit gehalten, so dass bei einem
set of Byte
insgesamt 256 Bits abgelegt werden müssen. Im gegensatz zu
ausgerichteten Feldern wir einem Array oder einem Record setzt der Delphi-Compilier die Struktur jedoch gepackt um, so dass für jeweils 8 Bits genau ein Byte verwendet werden kann, die Gesamtstrukur belegt daher für
n mögliche Elemente den Speicherplatz
(das
+7, um gauß'sche Klammern zu sparen) oder in mit dem Exponenten
q zur Basis 2 ausgedrückt mit
gilt daher
Das bedeutete für den Speicherverbrauch
s eines
set of Integer
mit
q=32 folglich
was also in dem Platzverbrauch von
512MB auf dem Stack entspräche...