Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

C++ Grundkurs

Template-Template-Parameter

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Klassen-Templates verfügen in C++ über die Möglichkeit, Templates als Template-Parameter anzunehmen.
03:29

Transkript

In dieser Lektion möchte ich Ihnen Templates als Template-Parametervorstellen. Template als Template-Parameter macht dann Sinn, wenn Sie Ihr Template über ein Template selbst parametrisieren wollen. Ein schönes Beispiel zeige ich Ihnen hier. Ich habe hier die Klasse Matrix. Die Klasse Matrix soll einerseits bestimmte Elemente halten und andererseits soll sie die Elemente selber in der Datenstruktur verwalten. Da biete es sich natürlich an, den Container der Standard Template Library zu verwenden und da steckt das Problem schon drinnen. Hier habe ich selber ein Template. Der Container ist das Cont hier. Wenn den Container verwende, benötigt der Container zwei Template-Parameter selber. Als erstes den Typ des Template-Parameters und als zweites den sogenannten Allocator. Hier sehen Sie ihn konkret ausgeschrieben. So schaut die Form aus, T für den Typ und std::allocator für den Allocator, für den konkreten Typ. Durch das, dass ich hier einen Container der Standard Template Library verwende, ist meine Matrix dynamisch. Das heißt, sie kann zur Laufzeit größer und kleiner werden. Wie verwende ich die Matrix. Im ersten Beispiel nämlich als Typ int und als Container, indem ich meine Elemente tatsächlich speichere einen std::vector. Im zweiten Beispiel nehme ich ein double als Container wieder einen std::vector. Im dritten Beispiel nehme ich ein std::string, aber als Container in diesem Fall std::list. Das zeige ich Ihnen jetzt noch in der Anwendung. Hier die Matrix parametrisiert über einen Typ und über einen Container. Wenn Sie sich hier wundern, dass in der typename hier keine aktueller Name wie T oder T1 steht, das hängt damit zusammen, dass ich den Typ in dem Klassen-Template hier nicht benötige. Von daher brauche ich ihn hier nicht erwähnen. Jetzt schaue ich mit Ihnen das Klassen-Template genauer an. Als erstes hat das Klassen-Template einen Konstruktor, der, das sollte neu sein, std::initalizer_list als Argument annimmt. Dieser Konstruktor heißt Sequenzkonstruktor, weil er eben eine std::initalizer_list als Argument annimmt. Was ist der Vorteil von diesem Konstruktor? Das ist ein Konstruktor, den ich von außen her einfach auf diese Art und Weise füttern kann. Das heißt, ich kann die Elemente einzeln in geschweiften Klammern angeben. Dann habe ich meine Elemente in inList drinnen. inList verwende ich, um data zu initialisieren. data ist der aktuelle Container, wo ich meine Daten halte. Der hier. Was mache ich hier noch im Konstruktor? Ich gebe den ganzen Container aus durch eine sogenannte range-basierte For-Schleife. Dann hat mein Klassen-Template noch eine weitere Methode getSize. Mit dieser Methode gebe ich die Größe meines Containers aus von data. Da kann ich einfach auf die Methode von data selbst zurückgreifen, weil die das eben schon kann. Das war das Klassen-Template. Jetzt zeige ich es Ihnen in der Anwendung. Im ersten Fall erzeuge ich eine Matrix vom Typ int, die ihre Werte im std::vector hält und gebe die Größe hier aus. Im zweiten Fall erzeuge ich eine Matrix vom Typ double, die ihre Werte auch im std::vector hält. Im dritten Fall erzeuge ich eine Matrix vom Typ std::string, die ihre Elemente aber diesmal in einer Liste hält. Ich gebe ihre Elemente aus. Was jetzt noch fehlt, ist natürlich die Anwendung. Sie sehen es, 1 2 3 4 5 6 7 8 9 10 ist das hier. Dann hier habe ich meine Doubles. Da bekomme ich meine Doubles. Hier habe ich meine Strings. Hier bekomme ich meine Strings hier ausgegeben. In dieser Lektion habe ich Ihnen Templates als Template-Argumente vorgestellt. Templates als Template-Argumente sind dann wie in dem konkreten Beispiel sehr interessant, wenn Sie ein Template haben, wo Sie selber ein Template als Parameter benötigen.

C++ Grundkurs

Steigen Sie in die mächtige Programmiersprache C++ ein und lernen Sie dabei alle wichtigen Funktionen mit Anwendungsbeispielen kennen.

8 Std. 14 min (147 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!