問題タブ [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::tuple と std::map によるセグメンテーション違反
次のようなコードの使用に問題があります。
コンパイラはエラーを認識しません。しかし、プログラムを開始すると、奇妙なセグメンテーション違反が発生します。そのため、それを引き起こすコード行を見つけたかったのです。それからGDBは私に言った:
残念ながら、これまでのところ、この種の問題に対する解決策は見つかりませんでした。
私がここで見逃したものを見た人はいますか?
編集:それで、さらに調査を行いました。問題の原因となっているオブジェクトは、ユーザー定義のものです。そして実際には、ベクトルでもエラーが発生するため、ブースト関連のものもマップの使用法も原因ではないようです!
また、別のクラスでエラーを再現しようとしました。残念ながら、私はそこでエラーを引き起こすことができませんでした。
今gdbは私に言います:
コンパイラの設定が原因でしょうか?
c++ - ブーストタプル: 要素の最大数を増やす
ブーストタプルのドキュメントには次のように書かれています:
現在のバージョンでは、0 ~ 10 個の要素を持つタプルがサポートされています。必要に応じて、上限を数十要素まで増やすことができます。
ただし、これを行う方法が記載されている場所が見つかりませんでした。
タプルにBOOST_MPL_LIMIT_VECTOR_SIZE
要素を持たせたい (デフォルトで 20)。これは、すべてのコンテナが同じ数の要素を持つように、 との間mpl::vectors
をマッピングしているためです。boost::tuples
c++ - boost.fusion ベクトル内の要素への参照
編集 - 無視してください - 質問は単純なタイプミスで解決されました。休憩が必要です。
ブースト融合ベクターの要素への参照にアクセスするにはどうすればよいですか?
boost.tuples tuples::get<i>(variable)
(参照を返す)とは異なりfusion::at_c<i>(variable)
、定数が返されるため、問題が発生します。
以下は私の問題を示しています
c++ - Boost.Range の C++ タプル - 要素型のタプルを取得しますか?
Boost.Range と Boost Tuple を試しています。範囲のタプルがある場合、タプルまたは対応する要素値をどのように型定義できますか? これを別の言い方をすれば、ここの代わりに何を入れますか/*?*/
:
もちろん、これは手動で行うことができ、次のように記述します。
あるいは:
しかし、タプルのサイズに関係なく、TupleOfElements
から直接派生できるはずだと思います。TupleOfRanges
どんなアイデアでも大歓迎です!
編集:これはうまくいくようです、@ltjaxに感謝します:
c++ - boost::bind が boost::tuple::get で機能しない()
boost::bind
で STLを使用しようとしてboost::tuple
いますが、コンパイルしようとするたびに次のエラーが発生します。
ここで私が間違っていることを知っていますboost::arg<1>
か?
ありがとうAFG
c++ - boost :: tupleの`<<`演算子を書く方法は?
以下のサンプルコードでは、boost::tupleが最初のテンプレート引数から暗黙的に作成できることを示しています。<<
そのため、あいまいになるため、演算子を記述できません。
ostringstream& << float
また、なぜあいまいなのかもわかりません。これには暗黙の構造はありません。なぜこれもあいまいなエラーを出すのですか?
エラーメッセージ:
tupleTest2.C:18:エラー:ISO C ++は、最初の変換の最悪の変換が2番目の変換の最悪の変換よりも優れているにもかかわらず、これらはあいまいであると言っています。
c++ - 実行時に定義された順序で C++ タプルをトラバースする
boost または std タプルを反復することは可能ですが、型情報を保持しながら、実行時に決定された順序で反復することはできますか?
私のタプルが type のオブジェクトで満たされているとしますFoo
:
Foo
タイプのリストをトラバースして、それらのメソッドを呼び出すことができるようにしたいと考えてdoit
いますが、rank
メンバーの値などによって定義された任意の順序で行います。
c++ - 別のものを使用して1つの具体的なboost::tupleタイプを構築する
与えられた:
typedef boost::tuple< T1, T2, T3, ..., Tn > Tuple_Tn
ここで、型 T1、... Tn はすべて定義されています。
そして、型 T_another が与えられたので、新しいタプル型を定義したいと思います:
typedef boost::tuple< T1, T2, T3, ..., Tn, T_another > Tuple_T_plus_1
しかし、ここに私の問題があります。それを定義したい場所では、タイプ Tuple_Tn と T_another にしかアクセスできません。
つまり、 Tuple_T_plus_1 を Tuple_Tn と T_another だけで定義することは可能でしょうか?
c++ - ブーストタプルの「get」メソッドはどのように機能しますか?
優れたブースト タプル クラス (tuple_basic.hpp) のソースを掘り下げた後、タプル メンバーにアクセスするための「get」メソッドで再帰的なテンプレート アルゴリズムが使用されていることがわかります。
私が理解するのに苦労しているのは、テンプレート化された数値パラメーターを特定のメンバー名にマップする方法です? さらに、再帰テンプレート関数は常に最初の要素に収束しません (再帰テンプレート関数の停止条件のように) 、get<0>())?、ゼロより大きい要素はどのようにアクセスされますか?