Maison >développement back-end >C++ >Comment puis-je faire fonctionner mon type personnalisé avec des boucles For basées sur une plage C ?
Personnalisation des types pour les boucles For basées sur une plage
Pour faire fonctionner un type personnalisé avec des boucles For basées sur une plage, vous pouvez spécifier start( ) et end() pour votre type. Ces méthodes doivent renvoyer des itérateurs qui permettent à la boucle de parcourir les éléments de votre type.
Considérations sur l'espace de noms
Si votre type personnalisé appartient à un espace de noms, vous devez définir begin() et end() dans cet espace de noms. Par exemple, si votre type est xml::my_type, vous devez définir xml::begin() et xml::end() pour le rendre accessible à la boucle for basée sur une plage.
Exigences pour Begin() et End()
Les méthodes Begin() et End() que vous définissez doivent satisfaire aux exigences suivantes :
Ils doivent fournir les opérateurs et les fonctionnalités nécessaires pour que la boucle for basée sur une plage fonctionne correctement, y compris les éléments suivants :
Deux options pour implémenter Begin() et End()
Là Il existe deux approches principales pour implémenter Begin() et End() pour votre type personnalisé :
Exemple :
Considérons l'exemple suivant :
struct my_type { int data[5]; // Define begin() and end() as member functions int* begin() { return &data[0]; } int* end() { return &data[5]; } };
En définissant ces fonctions membres, les instances de my_type peuvent désormais être itérées à l'aide d'une plage pour les boucles :
my_type mt; for (int& value : mt) { // Do something with each value in mt }
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!