問題タブ [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.

0 投票する
1 に答える
510 参照

c++ - boost::tuple を boost::shared_ptr に割り当てる方法

私のコードでは、このようなものがあります

st が tp を指すようにするにはどうすればよいですか?

0 投票する
0 に答える
183 参照

c++ - boost::fusion::vector への文字列のストリーミングは機能しませんか?

std::cin からストリーミングして fusion::vector を初期化したいと思います。ドキュメントにあるように、これは不可能のようです:

... std::string または C スタイルの文字列要素を使用してシーケンスを抽出することは、通常は機能しません。ストリーミングされたシーケンス表現は明確に解析できない可能性があるためです。

この質問は以前に尋ねられたかもしれませんが、「解析可能な文字列」がどのように見えるかを知りたいと思います。

彼女は例です:

出力:

Fusion io 演算子 ">>" を std::string でうまく動作させるにはどうすればよいですか?

0 投票する
1 に答える
446 参照

c++ - 融合ベクトル投影

異なるタイプの複数のメンバー データを持つ要素を持つ融合ベクトルがあり、特定のデータ メンバーのみを投影する新しい融合ベクトルを作成したいと考えています。私はすでにしばらくの間これを調べてきましたが、進歩はありません。

0 投票する
1 に答える
855 参照

c++ - タイプによるタプル要素の取得 (C++0x より前)

タプルを保持するテンプレート化されたクラスがあり、コンパイル時に型ごとに要素を取得できるようにしたいと考えています。簡単にするために、コンテナ クラスは最大 3 つのエントリに制限されています。

Get index of a tuple element's typeおよびFor std::tuple, how to get data by type, how to get type by index? への回答を読む これは、再帰的なビジター アプローチによって達成されました。C++11 機能を備えた GNU C++ コンパイラを使用すると、問題なく動作します。

コードを Windows に移植する必要があります。一部の外部ライブラリの制限により、Variadic テンプレートをサポートしていないように見える Visual Studio 2010 を使用する必要があります。

回避策があると確信しています (boost::tuple は可変個引数テンプレートのサポートなしでも使用できるため) が、私はこのテンプレート メタプログラミングのトピック全体にまだ慣れておらず、まだ解決策を見つけていません。

Visual Studio 2010 で動作する可変個引数テンプレートなしでこの問題を解決する方法を知っている人はいますか?

ところで: ビジター アプローチは、要素が 3 つをはるかに超えるタプルでもうまく機能します。コンテナーは 3 つまたは 4 つのタプル要素に制限されるため、実装にインデックスをハードコーディングしてもかまいません。

0 投票する
1 に答える
808 参照

c++ - C++ 派生クラス内から基本クラス メソッドを呼び出すことはできません

これは私の最初の質問です。すべて正しく行うことを願っています。

ブーストタプルからクラスを派生させようとしています。Boost のタプルは、個々のフィールドにアクセスするための get() テンプレート メソッドを提供します。興味深いことに、派生クラス内からメソッドを使用することはできません。

次のコードは問題を示しています。

なぜget<0>()メイン関数からメソッドにアクセスできるのだろうか

A& getVal0()メソッド内からではありません:

2 番目の戻り行は、メソッド呼び出しの範囲を基本クラスに限定しようとしたものです。

そして、これは別のエラーを生成します

外部関数 `boost::tuples::get<0>(*this) を呼び出すと機能します。そして、この回避策は私には問題ありません。しかし、この時点でタプルメソッドを使用できない理由はまだ疑問に思っています。

ブーストのドキュメントには、Visual C++ に関する通知があります。

ノート!メンバー取得関数は、MS Visual C++ コンパイラではサポートされていません。さらに、コンパイラは、明示的な名前空間修飾子なしで非メンバーの get 関数を見つけるのに問題があります。したがって、MSVC++ 6.0 でコンパイルする必要があるコードを記述する場合は、すべての get 呼び出しを tuples::get(a_tuple) として修飾する必要があります。

しかし、私はGCC 4.5.2 & 4.8.1を使用しています

前もって感謝します

0 投票する
2 に答える
138 参照

c++ - タプル内の参照型の検出

について学びましたstd::forward_as_tuple。私は自分のプロジェクトでこの技術を使用しています:

次に、MySQL C API のプリペアド ステートメント文字列を次のように取得できます。

「pszname」と「iage」は左辺値であるため、バインド変数です。2は右辺値であるため、SQL ステートメントのリテラルであることがわかります。

私の質問は:

タプルの要素が右辺値か左辺値かはどうすればわかりますか?

例えば:

最初の要素は左辺値参照、2 番目の要素は右辺値参照です。

それを伝えるには、C++ コードを使用してください。このコードは、varaidic テンプレート タプルを処理できます。

0 投票する
2 に答える
2355 参照

c++ - 効率的な順序付けのために std::tuple と std::tie を組み合わせた c++11

私は std::tuple と std::tie にかなり慣れていません。左から右への比較順序に従って効率的に構造体を順序付ける方法が必要です。このため、提供されているライブの例では、StructA のカスタム順序付けにstd::make_tupleおよびstd::tie型を使用することにしました。タプル アプローチは、左から右への組み込みの等価比較を提供します。これは、付随するラムダ コンパレータを使用した std::sort の LessThanComparable要素の順序付けに最適です (3 つの例を示します)。

問題は、私が知る限り、std::make_tupleはタプル要素の非効率的なコピーを作成することであり、std::make_tuple と std::tie を組み合わせる方法があるかどうか疑問に思っていました。 3 番目のコンパレータ - 失敗しました (そうでない場合、その出力は最初の出力順序のように見えます)。

私の特定の例では、タプルの最初の要素として一時を使用する必要があるため、std::tieを直接使用することはできません。

出力は次のとおりです。

私は、出力の 3 番目のセットが最初の出力と同じになることを期待していました。