Maison >développement back-end >C++ >Comment parcourir efficacement une liste d'arguments de modèle variadique compressée ?
Comment parcourir une liste d'arguments de modèle variadique compressée
Itérer sur une liste d'arguments de modèle variadique compressée nécessite de relever deux défis : extraire les données de la liste et déterminer le nombre d'arguments.
Extraire des données
Une méthode consiste à envelopper les données dans un type personnalisé, à les développer dans un vecteur et à itérer dessus. Cependant, cette approche nécessite des appels de fonctions complexes et limite les types d'arguments.
Comptage des arguments
Les méthodes traditionnelles telles que la récursivité ou les boucles ne sont pas réalisables dans une fonction générée par une macro. Au lieu de cela, des fonctions lambda peuvent être utilisées.
Solution de fonction Lambda
À l'aide d'expressions de pliage (C 17), nous pouvons parcourir les arguments à l'aide d'une fonction lambda :
<code class="cpp">template <class ... Ts> void Foo(Ts &&... inputs) { int i = 0; ([&] { ++i; std::cout << "input " << i << " = " << inputs << std::endl; }(), ...); }</code>
Ce lambda peut exécuter des actions, telles que l'impression d'arguments, pendant l'itération.
Gestion des retours et des ruptures
Pour les boucles complexes, on peut utiliser :
En tirant parti des expressions de repli et des fonctions lambda, nous pouvons parcourir efficacement une liste d'arguments de modèle variadique remplie, extraire les données et gérer les ruptures/retours selon les besoins.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!