Bezüglich TList, auch wenn die Gefahr besteht, das das Thema abdriftet:
Die TList-Klasse wurde nach dem
KISS-Prinzip erstellt. Sie ist schnell, kompakt und leicht verständlich. Wer allen Ernstes den Speicherverbrauch als Argument angibt, kennt die TList-Klasse nicht. Die Aussage ist schlicht und ergreifend falsch:
Eine einfach verkettete Liste benötigt pro Element 8 Bytes Speicherplatz (4 Bytes Nutzinformation + 4 Bytes Vorwärtsverkettung), eine doppelt verkettete Liste sogar 12 Bytes. Das ist die doppelte bzw. dreifache Menge des wirklich Nötigen.
Und eine TList? Die Nutzinformation wird in einem Array-Element gespeichert, der Verbrauch liegt also bei 4 Bytes pro Element. Dazu kommt noch der ungenutzte Bereich des Arrays am Ende: Wenn die Liste wachsen muss, tut sie das nicht in Einerschritten, sondern in 4er, 16er bzw. N/4-Schritten (bei mehr als 64 Elementen). Der maximale Overhead pro Element liegt also bei 25%.
Eine TList ist also im Vergleich hinsichtlich des Speicherverbrauches wesentlich kompakter als eine verkettete Liste.
@Medium: Dein Ansatz mit einem Hilfsarray... Was wäre das? Eine TList?