lesson 4 templates and container Flashcards

1
Q

Was sind Templates in C++ und wofür werden sie verwendet?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was ist Metaprogrammierung und wie hängen Templates damit zusammen?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Was sind die Vorteile der Verwendung von Templates?

A

Templates ermöglichen generischen Code, der unabhängig vom Datentyp funktioniert. Sie reduzieren Redundanz und erhöhen die Flexibilität des Codes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Was ist eine Template-Spezialisierung und wann wird sie verwendet?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Was sind Non-Type Template Parameter?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was sind sequentielle Container in der C++-Standardbibliothek?

A

Sequentielle Container speichern Elemente in einer linearen Reihenfolge, ähnlich wie Arrays. Beispiele sind std::vector, std::deque und std::list.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Was sind assoziative Container in der C++-Standardbibliothek?

A

Assoziative Container speichern Elemente als Key-Value-Paare. Beispiele sind std::set, std::map, std::multiset und std::multimap.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Was ist der Unterschied zwischen std::vector und std::deque?

A

std::vector verwendet kontinuierlichen Speicher, während std::deque es ermöglicht, Elemente effizient am Anfang und Ende hinzuzufügen oder zu entfernen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Was sind Iteratoren und welche Rolle spielen sie in Containern?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Was ist die Bedeutung von auto in Bezug auf Iteratoren seit C++11?

A

auto erlaubt dem Compiler, den Datentyp von Iteratoren automatisch abzuleiten, was den Code kürzer und lesbarer macht.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Was ist Object Ownership und warum ist es wichtig?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Wie helfen Smart Pointers bei der Verwaltung von Object Ownership?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Welche Arten von Templates gibt es in C++?

A

Es gibt Function Templates, Class Templates, Variable Templates und Alias Templates. Sie ermöglichen die Generierung von Code für verschiedene Datentypen und Szenarien.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Was sind die Herausforderungen bei der Verwendung von Templates?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly