Kursinhalt
C++-Vorlagen
C++-Vorlagen
Nicht-Typ-Template-Parameter
Beim Definieren einer Vorlage können wir nicht nur Typen angeben, sondern auch Werte an diese Typen übergeben. Das bedeutet, dass wir Vorlagen erstellen können, die sich je nach den bereitgestellten Werten unterschiedlich verhalten, aber darauf werden wir später noch zurückkommen.
main
#include <iostream> // Non-type parameter means we won't use typename // Instead you can use an actual type for it template<int N> void PrintValue() { std::cout << N << std::endl; } int main() { // Call the template function with a literal integer PrintValue<5>(); // 5 }
Der Hauptvorteil dieses Ansatzes besteht darin, dass alle Berechnungen zur Kompilierzeit durchgeführt werden, was seine Verwendung in der Metaprogrammierung ermöglicht.
main
#include <iostream> // Template function to calculate the square of a non-type parameter I template<int I> int Square() { return I * I; } // Return the square of I int main() { // The result of Square<5>() is computed at compile time int b = Square<5>(); // b will be initialized to 25 }
Wenn Sie das kompilierte Programm ausführen, wird der Wert von b
bereits 25
sein. Die Berechnung wird zur Kompilierzeit durchgeführt, was zu null Laufzeitoperationen führt.
Swipe to start coding
Vervollständigen Sie die Vorlagenfunktion und finden Sie die Summe der Variablen options und operations.
- Vervollständigen Sie die Vorlagenfunktion.
- Ändern Sie den Typ der Variablen
options
undoperations
, um sie als Vorlagenparameter übergeben zu können.
Lösung
solution
Danke für Ihr Feedback!
Nicht-Typ-Template-Parameter
Beim Definieren einer Vorlage können wir nicht nur Typen angeben, sondern auch Werte an diese Typen übergeben. Das bedeutet, dass wir Vorlagen erstellen können, die sich je nach den bereitgestellten Werten unterschiedlich verhalten, aber darauf werden wir später noch zurückkommen.
main
#include <iostream> // Non-type parameter means we won't use typename // Instead you can use an actual type for it template<int N> void PrintValue() { std::cout << N << std::endl; } int main() { // Call the template function with a literal integer PrintValue<5>(); // 5 }
Der Hauptvorteil dieses Ansatzes besteht darin, dass alle Berechnungen zur Kompilierzeit durchgeführt werden, was seine Verwendung in der Metaprogrammierung ermöglicht.
main
#include <iostream> // Template function to calculate the square of a non-type parameter I template<int I> int Square() { return I * I; } // Return the square of I int main() { // The result of Square<5>() is computed at compile time int b = Square<5>(); // b will be initialized to 25 }
Wenn Sie das kompilierte Programm ausführen, wird der Wert von b
bereits 25
sein. Die Berechnung wird zur Kompilierzeit durchgeführt, was zu null Laufzeitoperationen führt.
Swipe to start coding
Vervollständigen Sie die Vorlagenfunktion und finden Sie die Summe der Variablen options und operations.
- Vervollständigen Sie die Vorlagenfunktion.
- Ändern Sie den Typ der Variablen
options
undoperations
, um sie als Vorlagenparameter übergeben zu können.
Lösung
solution
Danke für Ihr Feedback!