C での構造体の反復処理
C で構造体を操作する場合、個々のメンバーを反復処理して抽出する必要がある場合があります。彼らの価値観。これは、さまざまな方法を使用して実現できます。
Boost Fusion/Phoenix の使用
Boost Fusion ライブラリと Phoenix ライブラリは、構造体を操作するための強力なツールを提供します。これらのライブラリを使用して構造体を反復処理する方法は次のとおりです:
<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;</code>
<code class="cpp">struct A { int a; int b; std::string c; };</code>
Boost Fusion で使用するために構造体を調整するには:
<code class="cpp">BOOST_FUSION_ADAPT_STRUCT(A, (int,a)(int,b)(std::string,c));</code>
print_struct_value 関数で次のことができます。次のように構造体を反復処理します:
<code class="cpp">void print_struct_value(struct A a) { boost::fusion::for_each(a, std::cout << arg1 << "\n"); }</code>
出力:
1 42 The Answer To LtUaE
以上がBoost Fusion と Phoenix を使用して C で構造体を反復処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。