Datenstrukturen mit Template

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Datenstrukturen mit Template

Beitrag von CSHW89 »

Hallo zusammen,

ich hatte mich schon öfter mit Datenstrukturen in PureBasic befasst, siehe auch meinen alten Thread:
http://purebasic.fr/german/viewtopic.php?f=3&t=25133

Nun habe ich eine neue Idee umgesetzt und will sie hier zur Verfügung stellen. Die Idee ist der Methode 4 im besagten Thread recht nahe, hat aber denk ich noch einige weitere Vorteile. Grob gesagt benutze ich eine Art Template-Programmierung wie aus C++ bekannt. Für jeden Typ werden die Prozeduren und die Strukturen dupliziert. Das Interface bleibt allerdings immer das gleiche.

Vorteile:
- Jede Art von Daten können in den Datenstrukturen gespeichert werden
- Autovervollständigung funktioniert
- Arbeitsspeicher für Elemente einer Datenstruktur wird automatisch freigegeben
- Wenn man möchte, kann PureBasic das Freigeben der Datenstruktur selbst (nicht nur der Elemente) überlassen

Nachteile:
- Etwas kryptischer Code in den Datenstrukturen durch Macro-Nutzung
- Overhead im kompilierten Code

Die folgenden Datenstrukturen habe ich umgesetzt:
- List
- Stack
- Queue
- TreeSet (geordnete Menge)
- TreeMap (geordnetes assoziatives Datenfeld)

Die ersten drei sind aber sehr einfach gehalten und sollen eher den Aufbau des Template-Codes erklären. Die mächtigste Datenstruktur ist die TreeMap und die darauf aufbauende TreeSet. Beide wurden durch einen Rot-Schwarz-Baum implementiert. Intern werden die Daten durch eine LinkedList gespeichert. Dadurch werden die Daten immer automatisch freigegeben, wenn ein Element aus der Datenstruktur gelöscht wird.
List, Stack und Queue kann wahlweise die Daten durch ein Array speichern. Nach außen bleibt der Zugriff aber gleich.

Ich hab zu jeder Datenstruktur ein kleines Beispiel geschrieben. Sie sind im Test-Ordner enthalten. Das TreeMap-Beispiel ist das umfangreichste und mit einigen Kommentaren versehen.

Link:
http://cshw89.mevedia.de/ContainerTemplate.zip

Anregungen oder Kritik sind natürlich gern erwünscht :).

lg Kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen