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.cpp
123456789101112#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.cpp
1234567891011#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
optionsetoperationspour pouvoir les passer en tant que paramètres de template.
Solution
Merci pour vos commentaires !
single
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Can you give an example of how to pass values to template types?
What are some practical use cases for compile-time calculations in metaprogramming?
How does this approach compare to runtime calculations in terms of performance?
Génial!
Completion taux amélioré à 5.88
Paramètres de Modèle Non-Typiques
Glissez pour afficher le menu
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.cpp
123456789101112#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.cpp
1234567891011#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
optionsetoperationspour pouvoir les passer en tant que paramètres de template.
Solution
Merci pour vos commentaires !
single