![]() |
Sortierter Container
Hallo,
in einem alten Projekt verwende ich für eine Container die Klasse TStSortedCollection. Die ist schon recht alt, sie unterstützt keine Generics, scheint aber sonst sehr mächtig zu sein. Nun würde ich das gerne modernisieren und frage mich was da als Container-Klasse passt. Es müsste eine sortierte Collection sein. Etliche wie z.B. die TList/Ilist bieten zwar eine Sortierfunktion an, sortieren aber nur auf Bedarf - oder nicht? Mir fällt keine Standardklasse ein die von Haus eine sortierte Liste darstellt (ausser TStringList). Ich habe hier noch wo eine Implementierung eines AVL-Baum rumliegen. Habe ich ein Brett vor dem Kopf? Irgendwelche Vorschläge? |
AW: Sortierter Container
Wie sieht dein Anwendungsfall aus, weswegen es eine sortierte Liste sein muss?
|
AW: Sortierter Container
Puh, schwierige Frage: Die Klasse ist recht low level und Teil wiederum einer anderen Datenstrukur, welche 1000fach verwendet wird. Und der Code ist teilweise bald 30 Jahre alt. :-D Die Anzahl der Einträge ist max. fünfstellig, typischer weise viel weniger.
es muss auch nicht unbedingt sein. Ich kann die Klasse auch lassen wie sie ist. Immerhin ist sie nun nicht mehr von der TStSortedCollection abgeleitet sondern hält diese als Kompositum. Ggf. könnte man auch einen Wrapper um die TStSortedCollection machen. Habe gerade nochmals gegoogelt und fand ![]() Es wird wohl nichts passendes geben. |
AW: Sortierter Container
TArray.Sort<T> und TArray.BinarySearch<T>
System.Generics.Collections |
AW: Sortierter Container
Spring4D hat:
- sorted list (nutzt binary search und insert an die entsprechende Stelle beim Einfügen, kann dadurch durch die vielen Moves bremsen) - sorted dictionary (nutzt intern einen rb tree und einen IComparer für die keys) - sorted set (genau wie das dictionary aber hier brauchts keinen extra key) |
AW: Sortierter Container
Zitat:
![]() ![]() |
AW: Sortierter Container
Zitat:
@TigerLilly: Jein. Ja, das ist das Ding. Nein, ich habe es nicht da raus, sondern damals noch orginal gekauft. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz