cppfor2020-06ex
Dynamischer Speicher,
"Smart Pointer"
"Schritt für Schritt" Entwicklung einer Template-Klasse
Nutzung von STL-Klassen für eigene Container
- Entwicklung einer Klasse mit dynamischer Speicherverwaltung
(fester Elemttyp "double", Gesamtzahl der Elemente erst zur Laufzeit festgelegt.
* Lösung:
Zum Zugriff auf die einzelnen Elemente soll operator[] überladen werden.
* Lösung: https://godbolt.org/z/K9uM5N
Ein weiterere Member-Funktion at() soll hinzugefügt werden, die wie operator[] arbeitet aber zusätzlich den Index auf Gültigkeit prüft.
* Lösung: https://godbolt.org/z/AL4nvq
Die Klasse soll nun zu einem "move-only"-Typ gemacht werden.
* Lösung: https://godbolt.org/z/kYCZo5
ERST ZUM ENDE soll daraus eine Template gemacht werden.
* Lösung: https://godbolt.org/z/LgIRoQ - Wie zuvor mit Implementierung basierend auf einem std::unique_ptr.
* Lösung:
Durch Verzicht auf die Indexprüfung entfällt das Abspeichern der Größe und es können weitere Funktionen gestrichen werden.
* Lösung:
Zwecks bessere Dokumentation sollten dennoch delete-d und default-ed Funktionen aufgezählt werden:
* Lösung: - Wie zuvor aber der Speicherplatz soll zur COMPILE-ZEIT festgelegt werden
* Lösung: - Für eine veränderte Aufgabenstellung wird eine Schnittstelle zum Einfügen und Löschen von Elementen zur Verfügung gestellt:
(a) Alle enthaltenen Elemente werden im Kontruktor auf einen Initialwert gesetzt.
(b) Neue Elemente überschreiben enthaltene Speicherpositionen, an denen noch Initialwert steht.
(c) Gelöscht werden Elemente, indem sie mit dem Initialwert überschrieben werden.
* Lösung: - Wie zuvor, aber die Implementierung erfolgt basierend auf einem STL-Container.
* Lösung: