問題タブ [boost-tuples]
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::Tuples と戻り値の構造体
私はタプルに頭を悩ませようとしています(@litbに感謝します)。タプルの使用に関する一般的な提案は、> 1の値を返す関数です。
これは私が通常構造体を使用するものであり、この場合のタプルの利点を理解できません.末期の怠惰な人にとってはエラーが発生しやすいアプローチのようです.
例を借りて、これを使用します
タプルを使用すると、
しかし、呼び出している関数のコード (または、信頼できるほどばかげている場合はコメント) を読まなければ、どの int が商であり、その逆かはわかりません。むしろ…のようです。
...これでは自信が持てません。
では、あいまいさを補う構造体に対するタプルの利点は何でしょうか?
c++ - const std::map?
ブーストを使用すると、テストなどのために const std::containers を初期化できます。上記のコードが示すように、const std::map または std::map を作成するのは非常に簡単です。の作成const map<string, std::vector<int>>
はもう少し複雑ですが、それでもかなり簡単です。
を考え出そうとしていますconst std::map<boost::tuples::tuple<string, string, string>, string>
が、初期化に失敗しています。他の誰かがそれで運が良かったのですか?
c++ - Boost::tuple は Python の itemgetter に相当しますか?
次のようなコードがあります。
残念ながら、最後の行はコンパイルされません。次のようなメッセージが表示されます。
基本的に、Python の operator.itemgetter 関数を使用するには、次のようにします。
Boostを使用してそれを行うにはどうすればよいですか?
c++ - ブーストタプルは変更可能ですか?
STLマップの値としてブーストタプルを使用しています。これまでは、タプルを作成してマップに挿入し、後の段階で値を取得するだけで済みました。
次に、マップ内のタプルを変更できるようにする必要があります。これは可能ですか、それとも構造体の代わりにタプルを使用してはいけない場所に出くわしたことがありますか。
ありがとう
c++ - サイズ/パラメータの型が不明なタプル
整数からタプルのセットへのマップを作成する必要があります。単一のセット内のタプルは同じサイズです。問題は、タプルのサイズとそのパラメーターの型が、コンパイル時ではなく実行時に決定できることです。私は次のようなものを想像しています:
しかし、ポインタを使用して、これを正確に行う方法がよくわかりません。
これの目的は、それぞれが一意の識別子 (キー) を持つ一時的な関係 (テーブル) を作成することです。別の方法があるかもしれません。
c++ - Boost.Tuple は C++0x 可変個引数テンプレートと互換性がありますか?
私は可変個引数テンプレート(gcc 4.5)をいじっていて、この問題にぶつかりました:
GCC エラー メッセージ:
boost::tuple
byのすべての出現を置き換えると、正常にstd::tuple
コンパイルされます。
ブーストタプルの実装に問題はありますか? それともこれはgccのバグですか?
今のところ、Boost.Tuple に固執する必要があります。回避策を知っていますか?
ありがとう。
c++ - テンプレート関数のエラー(Boost.Tuplesを使用)
このテンプレート関数を使用してライブラリを取得しています。Gcc 4.1.2(codepad.org)は次のエラーを報告します:
テンプレートの経験が豊富な人がアドバイスを提供できますか?自分自身を研究するための問題またはキーフレーズのどちらか?これは私を立ち往生させています。
c++ - 可変個引数テンプレートを使用して C++ で mixin コンストラクターの問題を解決する
私は最近、コンストラクターの問題に取り組みました。この問題では、互いに装飾するさまざまな mixin クラス (および最上位のホスト クラス) が異なるコンストラクター シグネチャを持っています。結果の装飾されたクラスで単一のコンストラクターを維持し、init 関数を追加せずに、次の解決策を見つけました。mixin クラスに課される唯一の制限は、そのコンストラクターが複数のパラメーターを受け取る場合、それらはすべて単一のタプルにカプセル化する必要があるということです。(このコードを g++ でコンパイルするには、-std=c++0x フラグが必要です)
私の質問は次のとおりです
。1) C++0X でこの問題を解決するためのより優れた、より洗練された方法はありますか?
2) 具体的には、タプルは本当に必要ですか?
c++ - エラー:boost.fusion :: for_each()およびboost.tupleから派生した構造体
このコードのコンパイル時:
エラーが発生します:「structany_type」に「category」という名前のタイプがないのはなぜですか?boost.tupleから継承したい。
c++ - タプルのパフォーマンスを向上させる
boost :: tupleのドキュメントによると、タプルの1つの要素にアクセスすることは、メンバー変数にアクセスすることと同じパフォーマンスになります。たとえば、次の宣言があるとします。
これらの2つのステートメントは、同等の(または無視できる程度の)パフォーマンスを持つ必要があります。
boost :: tupleのソースを調べましたが、正しく理解していれば(理解したかどうかはわかりませんが)、get<N>
関数は実際に次のアクションを実行します。
これは、直接アクセスよりもリンクリストでのルックアップに似ており、私が理解している限り、メンバーアクセスから予想されるO(1)ではなくO(N)の複雑さを持っています。ブーストに関する私の過去の経験から、私はそれを間違って得たと思います。しかし、私の間違いは何ですか?get
実際にはどのように機能しますか?