問題タブ [boost-fusion]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 実行時にboost::fusion::vectorを埋める方法は?
まず、ここで私の以前の質問と類似していることをお詫びしますが、私は正しいことを尋ねたとは思いません。
私は方法を持っています:
これは、実行時に決定されるタイプを取りfusion::vector<T1, T2, T3, ..., Tn>
ます-たとえばvector<int, double>
、ある呼び出しとvector<int, double, int>
別の呼び出しで。
このベクトルを次のようなもので動的に埋めたい:
at_c はconst
.
他のことも試しましたが (前の質問を参照)、これを達成する方法がまだわかりません。
どんな助けでも大歓迎です!ありがとう。
c++ - ブースト融合ベクターのタイプを識別する方法
boost::fusion ベクター内のタイプを識別するにはどうすればよいでしょうか?
例えば
次に、タイプとして、タイプとして、タイプとして識別v[0]
できるもの。int
v[1]
double
v[2]
string
ありがとう。
c++ - フュージョンマップ内にフュージョンマップをネストすることは可能ですか?
私はフュージョンに不慣れです。フュージョンマップ内にフュージョンマップをネストすることは可能ですか?以下の例でBに解決するコードを書くにはどうすればよいですか?
c++ - boost::spirit::karma で boost::fusion::map を使用する
ブーストスピリットを使用してテキストファイルをデータ構造に解析していますが、このデータ構造からテキストを生成し始めています (スピリットカルマを使用)。
データ構造の 1 つの試みは、boost::fusion::map です ( この質問への回答で提案されているように)。しかし、boost::spirit::qi::parse() を使用して簡単にデータを取得できますが、カルマを使用してテキストを生成しようとすると失敗しました。
以下は私の試みです(特に「map_data」タイプを見てください)。他のフュージョン タイプを読んで遊んだ後、boost::fusion::vector と BOOST_FUSION_DEFINE_ASSOC_STRUCT を見つけました。私はそれらの両方で出力を生成することに成功しましたが、それらは理想的ではないようです.ベクトルでは名前を使用してメンバーにアクセスできません(タプルのようなものです)-そして他のソリューションでは必要ないと思いますメンバーにアクセスするための両方の方法 (メンバー名とキーの種類)。
コメント行を含めると、コンパイル エラーの多くのページが表示されます。その中には、特に次のようなものがあります。「boost::fusion::pair」から「double」への引数 1 の既知の変換がありません::pair' to 'float'</p>
to_string には、ペアではなく、map_data の値が必要なのではないでしょうか? 私はテンプレートが苦手ですが、次の方法で変換を使用してマップからベクトルを取得しようとしました
しかし、take_second をインスタンス化するときにどの型を指定すればよいかわかりません。とにかく、マップの値を取得 (反復) する簡単な方法が必要だと思います (ありますか?)
この質問に答える場合は、ASSOC_STRUCT とマップのどちらを使用するのが良いかについても意見をお聞かせください。
c++ - boost ::fusion::filter_ifメタ関数の使用例が必要
boost ::fusion :: vectorタイプが与えられた場合、新しいタイプを取得するために、すべての非refメンバーをフィルターで除外したいと思います。たとえば、これはboost ::fusion::vectorをboost::fusion::vectorに変換します。boost ::fusion :: filter_ifメタ関数がこれを実行できる可能性があると推測していますが、ドキュメントでの使用例はありません。任意の提案をいただければ幸いです。
c++ - フュージョンと const の正確性を高める
ブーストフュージョンを学んでいて、std::vector<boost::fusion::vector<int,double,double> >
. コードは単純に見えますが、const でいくつかの問題が発生しているようです。私は明らかに const について何かを誤解しており、どこが間違っているのかを誰かに説明してもらいたいと思っています。
コード:
retVal.push_back()
const のキャストに問題があるため、コードは でコンパイルできません。いくつかの const キーワードを削除および追加するいくつかの順列を試しましたが、順列によるプログラミングはうまくいきませんでした。
誰にも考えはありますか?ところで、const
の関数定義にありsum
、c
とどまる必要があります。
b
編集:私はそれが満たされていることを言及するのを忘れていましx
たstd::vector<fusion::vector<int, double, double> >
EDIT2:修正されたコード:
c++ - ブーストを使用してポリモーフィック クラスをシリアル化し、きれいに印刷することは可能ですか?
マーシャリング/アンマーシャリング、およびフィールド名 (RTTI?) を含む構造体のプリティプリントにブーストを使用する最小限の方法はありますか? 関数を使用して、何らかの方法でインターフェイスをboost::fusion
自動的に実装できるようですが、これにどのようにアプローチするか、または可能かどうかはわかりません。boost::serialization
boost::fusion
c++ - 部分構造で BOOST_FUSION_ADAPT_STRUCT を使用するには?
たとえば、次の構造体/サブ構造体の定義があるとします。
でどのように使用すればよいBOOST_FUSION_ADAPT_STRUCT
ですemployee_rec
か?
c++ - データフレームを実装するための異なる std::vector の融合ベクトルのブースト
次の行に沿って、C++ (S++/R など) で「データ フレーム」型クラスを実装しようとしています。
ここでの私の目標は、質問とはあまり関係のない理由から、データを (単純なタプルのベクトルとしてではなく) 「列ベクトル」としてメモリに格納することです。
(可変個引数のテンプレートがなく、固定数のパラメーターについて今は心配していないと仮定します。これは後で回避できます)。
MPL と融合を使用して、これまで std:vectors の融合シーケンスを作成できました。
また、data_frame と同じ署名を持つ boost::tuple の特殊化である tuple_type を定義することもできました。
ここで、tuple_type を data_frame に追加できるメンバー関数を定義したいと思います。これが私が考えていることです:
これを (VS2010 C++ で) コンパイルすると、次のエラーが発生します。
the_vectors
どうやら、zip は参照を渡すのではなくstd:vector 要素のコピーを作成しているため、push_back
失敗します。
Fusion zip にコピーではなく参照を渡す方法を知っている人はいますか?
c++ - スピリットパーサーを一般化して、任意の順序でリストを取得するにはどうすればよいですか?
intまたは引用符で囲まれた文字列のリストを解析できる単純なパーサーがあります。
SIMPLE_CASEを実行すると、入力は次のようになります。
my_record
これは、intのリストとstd::stringのリストを含むに正しく解析されます。
このコードを汎用に変更して、0個以上のINTリストと0個以上のSTRリストを任意の順序で受け取り、それらをmy_record
適切な順序で詰め込むことができるようにします。2番目のより一般的なテストケースが必要です。
解析するには:
以下のコードは、実行すると正常に機能します。
しかし、これを実行するときに一般的なケースを機能させる方法がわかりません:
sandbox.cppのコード