Entwickler-Ecke

Sonstiges (Delphi) - Operationen mit Mengen


buster - Mo 20.07.15 08:23
Titel: Operationen mit Mengen
Hallo zusammen,

gibt es eine effiziente Methode in Delphi, mit Mengen zu arbeiten (z.B. Schnittmenge ermitteln etc.)? Ich habe schon set of [] gefunden, aber das ist ja auf 255 Elemente begrenzt, die man vorher wohl auch noch mehr oder weniger festlegen muss. Bleibt dann wirklich nur noch, z.B. ein Array Wert für Wert durchzugehen und zu vergleichen?

Beste Grüße,
Bastian


Stundenplan - Mo 20.07.15 10:29

Du könntest auch, falls ein Mengentyp mal "voll" wird, den Rest in einen anderen Mengentyp auslagern. Dann musst du zwar Operationen mehrfach schreiben, hättest aber sicher einen Performance-Gewinn im Gegensatz zu handgestrickten Array-Schleifen.


Horst_H - Mo 20.07.15 10:49

Hallo,

man kann auch mit TBits arbeiten
http://www.entwickler-ecke.de/viewtopic.php?t=112954

Gruß Horst


buster - Mo 20.07.15 13:40

Danke für die schnellen Antworten, ich werd es dann erst mal mit dem Aufteilen der Mengen probieren. TBits schau ich mir auf jeden Fall auch noch mal an, aber im Moment fehlt mir da die Zeit dazu...


jfheins - Mo 20.07.15 19:58

Du kannst dir mal eine (beliebige) Hashset-Implementierng in Delphi suchen. Hier habe ich eine gefunden: https://github.com/pavkam/DeHL

Ein HashSet beinhaltet Werte und ermöglicht das schnelle Abfragen ob ein Wert enthalten ist. Das Delphi-Set ist also quasi ein compiler-magic Hashset mit eine maximalen Kapazität von 255. In neueren Delphis sollte so eine Klasse aber auch dabei sein.

Hier ist noch etwas nettes: https://bitbucket.org/sglienke/spring4d/src/7272ae41834315e84fef7c87c060586b5084106d/Source/Base/Collections/Spring.Collections.Sets.pas?at=master verwendet aber Generics. Weiß nicht, ob dein Delphi das kann.