問題タブ [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++ - デフォルトで構築不可能なコピー不可能なオブジェクトのタプルを初期化する方法は?
次のようなパラメーター化されたコンストラクターを持ついくつかのクラスが与えられます。
そのようなクラスのタプルを適切に初期化する方法は?
A または B のコピー コンストラクターを使用せず、可能であればムーブ コンストラクターも使用しない。可能であれば、C++03 ソリューションが推奨されます。
c++ - boost::tuples に == が定義されていない
私はこのコードを持っています:
しかし、コンパイルしようとすると、次のエラーが表示されます。
noRef
のエイリアスでboost::tuple
あり、tuple_comparison
このケースを管理する必要があるため、なぜこれが発生するのですか?
エラーが見つかりました。解決方法がわかりません:
操作に誤りがあったようですstd::tie
。したがって、次のように書き換えます。
正常に動作します。key
問題は、タプル全体の潜在的に高価なコピーであるのに対し、 usingtie
は参照のタプル (はるかに小さい) であるため、このソリューションは非効率的であるということです。it->first
では、どうすればタプルへの参照を取得できますか? 同じtie
トリックを使用する必要がありますか?
python - boost::python::tuple に要素を追加する
オブジェクトから 2 番目の要素を削除しようとしていboost::python::tuple
ます。2 番目の要素を削除したいタプルは、Python 関数呼び出しに渡される引数のリストです。
要素を削除するには、次のようにします。
boost::python::tuple
問題は要素を追加しないことだと思いますが、最初と2番目のスライスを要素として新しいタプルを作成しました。
どうすればこれを解決できますか?
stdmap - boost::tuple をキーとして使用したマップ検索
boost::tuple の形式のキーがマップでどのように検索されるかを理解したいと思いますCompare=std::less
。たとえば、これは私が取り組んでいるコードのスニペットです。
マップに値を挿入するときに、s1
isabc
とs2
isとしxyz
ます。ルックアップ中に、キーの一致はどのように決定されますか?
と の文字列比較はs1
、と でそれぞれ個別にs2
行われますか? その場合、比較演算子は使用されていますか?abc
xyz
std::string
ありがとう!
c++ - ブーストタプルのベクトル内の要素の位置を見つける
要素を見つけるために、boost::tuples のベクトルを繰り返し処理しています。ただし、後で削除するために、ベクター内のこの要素の正確な位置も見つけたいと思います。これはコードですが、std::distance では正しい値が得られません。
たとえば、サイズが 5 のベクトルの場合、std::distance は 8 です!
なんで?私のコードのどこにバグがありますか?
c++ - std::get、std::tuple_size、std::tuple_element を使用して、タプルのコンポーネントを合計します
タプルのようなインターフェイスを持つカスタム クラスがあります。コードをできるだけ汎用的なものにしたいので、関数std::get
、std::tuple_size
に基づいてアルゴリズムを作成することをお勧めします。std::tuple_element
したがって、これらの関数を特殊化してアルゴリズムを使用するだけで済みます。これらの関数の特殊化を必要とする概念を呼びましょうTuple
。
今、私は のコンポーネントを合計しようとしていますTuple
。関数宣言は次のようにする必要があります。
多くのテンプレート プログラミングが関係していると思いますが、その方法がわかりません。
追加には、 global のオーバーロードを使用し+ operator
ます。
私はc++1zを使用しています。