lesson 4 templates and container Flashcards
Was sind Templates in C++ und wofür werden sie verwendet?
Templates sind ein Feature von C++, das die Implementierung von parametrisierbarem Code ermöglicht. Sie erlauben das Schreiben von Funktionen oder Klassen, die mit verschiedenen Datentypen arbeiten können.
Was ist Metaprogrammierung und wie hängen Templates damit zusammen?
Metaprogrammierung ist die Erstellung von Programmen, die andere Programme generieren. In C++ wird Metaprogrammierung intensiv mit Templates durchgeführt, da sie zur Compile-Zeit Code generieren.
Was sind die Vorteile der Verwendung von Templates?
Templates ermöglichen generischen Code, der unabhängig vom Datentyp funktioniert. Sie reduzieren Redundanz und erhöhen die Flexibilität des Codes.
Was ist eine Template-Spezialisierung und wann wird sie verwendet?
Template-Spezialisierung erlaubt eine spezielle Implementierung für eine bestimmte Parameterausprägung eines Templates. Sie wird verwendet, wenn der Standard-Template-Code für einen Datentyp nicht geeignet ist.
Was sind Non-Type Template Parameter?
Non-Type Template Parameter sind Template-Parameter, die konkrete Werte wie z.B. int
oder char
als Parameter akzeptieren und nicht nur Typen. Sie werden verwendet, um z.B. die Größe eines Arrays zu übergeben.
Was sind sequentielle Container in der C++-Standardbibliothek?
Sequentielle Container speichern Elemente in einer linearen Reihenfolge, ähnlich wie Arrays. Beispiele sind std::vector
, std::deque
und std::list
.
Was sind assoziative Container in der C++-Standardbibliothek?
Assoziative Container speichern Elemente als Key-Value-Paare. Beispiele sind std::set
, std::map
, std::multiset
und std::multimap
.
Was ist der Unterschied zwischen std::vector
und std::deque
?
std::vector
verwendet kontinuierlichen Speicher, während std::deque
es ermöglicht, Elemente effizient am Anfang und Ende hinzuzufügen oder zu entfernen.
Was sind Iteratoren und welche Rolle spielen sie in Containern?
Iteratoren sind abstrakte Objekte, die den Zugriff auf Elemente in Containern ermöglichen, ohne die interne Struktur offenzulegen. Sie bieten eine einheitliche Schnittstelle für die Traversierung von Containern.
Was ist die Bedeutung von auto
in Bezug auf Iteratoren seit C++11?
auto
erlaubt dem Compiler, den Datentyp von Iteratoren automatisch abzuleiten, was den Code kürzer und lesbarer macht.
Was ist Object Ownership und warum ist es wichtig?
Object Ownership beschreibt, welches Objekt für die Verwaltung und Zerstörung eines anderen Objekts verantwortlich ist. Eine klare Ownership ist entscheidend, um Speicherlecks zu vermeiden.
Wie helfen Smart Pointers bei der Verwaltung von Object Ownership?
Smart Pointers automatisieren die Speicherverwaltung, indem sie sicherstellen, dass Objekte zerstört werden, wenn sie nicht mehr benötigt werden, und helfen somit, Speicherlecks zu vermeiden.
Welche Arten von Templates gibt es in C++?
Es gibt Function Templates, Class Templates, Variable Templates und Alias Templates. Sie ermöglichen die Generierung von Code für verschiedene Datentypen und Szenarien.
Was sind die Herausforderungen bei der Verwendung von Templates?
Templates führen oft zu komplexen und schwer verständlichen Fehlermeldungen. Die Codeanalyse in IDEs wird erschwert, und es gibt keine saubere Trennung von Deklaration und Implementierung.