![]() |
Re: 2 dimensionale sets?
Zitat:
Zitat:
Delphi-Quellcode:
Var
X : Set Of Int64; // Das wird ganz schön groß. Y : Set Of TObject; // Das auch. |
Re: 2 dimensionale sets?
Nein, tue ich nicht. TObject ist kein Ordinaltyp, Int64 auch nicht (zumindest nicht in 32 Bit-Delphi). Spätestens bei Cardinal sollte Schluss sein, das sind ja bereits 128 MB pro Set. Aber zumindest Words sollten drin sein.
Aber der Compiler kann definitiv die Obergrenze sehen, in dem Fall ist es zum Beispiel high(Cardinal). |
Re: 2 dimensionale sets?
Das sehe ich auch so. Die Koordinaten-Tupel müsste man eben in den entsprechenden Ordinaltyp casten, wie ich bereits in Post 12 vorgeschlagen habe.
|
Re: 2 dimensionale sets?
Was dann aber zu unnötigem Speicherverbrauch führen kann. Eine Hashset-Implementation oder eine sortierte Liste von Sets oder sogar eine sortierte Liste von getaggten, sortierten Listen von Integern könnte hier sinnvoller sein. Dann kann man immerhin in logarithmischer Zeit nach Koordinaten suchen.
|
Re: 2 dimensionale sets?
@3_of_8, @Apollonius:Meint ihr allen Ernstes, daß ein 128MB großer Basistyp in einer seriösen Programmiersprache etwas zu suchen hat? Aber ich sehe gerade, ihr widmet euch wieder dem Thema, bei dem mit 3_of_8's Vorschlag eigentlich die optimale Lösung vorgeschlagen wurde. Man kann ja die X-Koordinate in den höherwertigen 16/32-bit ablegen, die Y-Koordinate in den unteren. Dann kann man aufs Casten verzichten und mappt mit einfachen MOD in die Hashmap.
|
Re: 2 dimensionale sets?
Wenn array[Cardinal] of <Typ> geht, warum nicht set of Cardinal? Letzteres ist sogar kleiner.
|
Re: 2 dimensionale sets?
@3_of_8: Gähn.
|
Re: 2 dimensionale sets?
Was heißt da gähn? Nach deiner Begründung dürfte array[Cardinal] ja auch nicht gehen und der Compiler müsste da dann auch eine Obergrenze setzen.
|
Re: 2 dimensionale sets?
Zitat:
Von mir aus ist 'SET OF CARDINAL' ein wichtiger Datentyp, der unverständlicherweise in ObjectPascal und allen anderen Programmiersprachen nicht implementiert wurde, obwohl er durchaus abgebildet werden könnte. So wie 128-stelliges BCD, Ganzzahlen mit beliebiger Stellenanzahl, Tristate Logic usw. Allerdings bezweifle ich, das die Person, die dieses Sprachfeature implementiert, am nächsten Tag noch seinen Job innhalten dürfte. Bei meinen Einwänden bezüglich einer effizienten Umsetzung eines Compilers bin ich nicht davon ausgegangen, das jemand allen Ernstes ein 128MB-Monster im Speicher halten würde, wo man so etwas mit sparse sets wesentlich komprimierter darstellen könnte. Noch Einwände, bei denen ich nicht einschlafe? |
Re: 2 dimensionale sets?
ich will mich ja in eure Diskussion nicht einmischen, aber hier geht es wohl nicht mehr um mich, oder? ^^"
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:49 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 by Thomas Breitkreuz