Itération à travers les membres de la structure C
En C, les structures sont des types de données définis par l'utilisateur qui regroupent des membres de données de types de données éventuellement différents. Pour parcourir les membres d'une structure et accéder à leurs valeurs, vous pouvez exploiter les capacités des bibliothèques C telles que Boost Fusion et Boost Phoenix.
Boost Fusion/Phoenix Approach
Boost Fusion fournit une bibliothèque de modèles qui facilite le travail avec des structures de données hétérogènes. Boost Phoenix, quant à lui, offre des capacités de méta-programmation. En combinant ces frameworks, vous pouvez obtenir une itération de structure flexible et efficace :
<code class="cpp">#include <boost/fusion/adapted/struct.hpp> #include <boost/fusion/include/for_each.hpp> #include <boost/phoenix/phoenix.hpp> using boost::phoenix::arg_names::arg1; #include <iostream> struct A { int a; int b; std::string c; }; BOOST_FUSION_ADAPT_STRUCT(A, (int, a)(int, b)(std::string, c)); void print_struct_value(const A& obj) { boost::fusion::for_each(obj, std::cout << arg1 << "\n"); } int main() { const A obj = {1, 42, "The Answer To LtUaE"}; print_struct_value(obj); return 0; }</code>
Dans cet extrait, nous adaptons la structure A pour qu'elle fonctionne avec Boost Fusion. Nous définissons une fonction print_struct_value qui utilise le mécanisme de correspondance d'arguments de Boost Phoenix pour imprimer chaque valeur de membre. Lorsque vous instanciez l'objet A et appelez print_struct_value, la fonction parcourt la structure, imprimant les valeurs de a, b et c de manière séquentielle.
Cette approche fournit un moyen flexible et personnalisable d'itérer sur les membres de la structure en C. .
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!