Contenu du cours
Modèles C++
Modèles C++
Paramètres de Modèle Non-Typiques
Lors de la définition d'un modèle, nous pouvons non seulement spécifier des types, mais aussi passer des valeurs à ces types. Cela signifie que nous pouvons créer des modèles qui se comportent différemment en fonction des valeurs fournies, mais nous y reviendrons un peu plus tard.
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 }
L'avantage principal de cette approche est que tous les calculs sont effectués lors de la compilation, ce qui permet son utilisation en métaprogrammation.
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 }
Lorsque vous exécutez le programme compilé, la valeur de b
sera déjà 25
. Le calcul est effectué lors de la compilation, ce qui entraîne zéro opérations à l'exécution.
Swipe to start coding
Complétez la fonction template et trouvez la somme des variables options et operations.
- Complétez la fonction template.
- Changez le type des variables
options
etoperations
pour pouvoir les passer en tant que paramètres de template.
Solution
solution
Merci pour vos commentaires !
Paramètres de Modèle Non-Typiques
Lors de la définition d'un modèle, nous pouvons non seulement spécifier des types, mais aussi passer des valeurs à ces types. Cela signifie que nous pouvons créer des modèles qui se comportent différemment en fonction des valeurs fournies, mais nous y reviendrons un peu plus tard.
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 }
L'avantage principal de cette approche est que tous les calculs sont effectués lors de la compilation, ce qui permet son utilisation en métaprogrammation.
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 }
Lorsque vous exécutez le programme compilé, la valeur de b
sera déjà 25
. Le calcul est effectué lors de la compilation, ce qui entraîne zéro opérations à l'exécution.
Swipe to start coding
Complétez la fonction template et trouvez la somme des variables options et operations.
- Complétez la fonction template.
- Changez le type des variables
options
etoperations
pour pouvoir les passer en tant que paramètres de template.
Solution
solution
Merci pour vos commentaires !