Heute haben Sie die Wahl. Na, sagen Sie schon, was gefällt Ihnen bei C nicht so? Was stört Sie denn so an C? Stimmt, Sie haben Recht, was Arrays angeht da ist C wirklich arm dran im Vergleich zu Oberon. Es wäre doch wirklich schön, denn man Arrays hätte, die Ihre Größe zur Laufzeit ändern können und die man zudem auch gleich als Stack und Queue verwenden kann wie in Perl. Da haben Sie vollkommen Recht. Und was fällt Ihnen sonst noch so an C auf? Klar, da hätt ich auch selber draufkommen können. Die Fehlerbehandlung in C ist auch nicht gerade erste Sahne. Ja wo Sie das so erwähnen, da fällt mir doch eine schöne Aufgabe für Sie ein: Schreiben Sie doch solche Arrays, deren Größe dynamisch ist. Natürlich machen Sie das mit einer vernünftigen Fehlerbehandlung durch Ausnahmen (engl. exceptions).
Also nochmal genau: Sie bekommen die Datei main.cc und sollen passend dazu Dateien vector.cc, vector.cc und Makefile schreiben. Das Makefile erzeugt eine ausführbare Datei main. In der Header-Datei dürfen nur die Deklarationen stehen. Die Datei vector.cc enthält schließlich die Implementierungen. Durch die Verwendung in der Datei main.cc ist schon vorgegeben, welche Funktionen zu implementieren sind und wie die Parameter und der Rückgabewert jeweils aussieht.
Beschreibung der einzelnen Funktionen, die im Namespace vec zu finden sein sollen:
Ihre Implementierung darf nicht auf der STL (oder sonstigen derartigen Bibliotheken basieren)!
Tipp: Die C-Standard-Funktionen malloc, realloc und memmove könnten sich als nützlich erweisen.