問題タブ [boost-lambda]
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++ - c++ ブースト ラムダ ライブラリ
ブーストラムダライブラリを使用してプログラミングを開始する最良の方法は何ですか.
c++ - Boost phoenix または lambda ライブラリの問題: std::vector から要素を削除する
最近、boost::lambda または boost::phoenix で解決できると思われる問題に遭遇しましたが、正しい構文を取得できなかったため、別の方法で解決しました。私がやりたかったのは、特定の長さよりも短く、別のコンテナーにない「文字列」内のすべての要素を削除することでした。
これは私の最初の試みです:
私がそれをやった方法はこれでした:
c++ - ブースト ラムダまたはフェニックスの問題: std::for_each を使用してコンテナーの各要素を操作する
古いコードをクリーンアップしているときに問題が発生しました。これは機能です:
私が興味を持っているのは、for ループをクリーンアップしてラムダ式にすることですが、正しい引数を get_connectivity_data に正確に渡す方法にすぐに行き詰まりました。get_connectivity_data は参照によって std::vector を受け取り、いくつかのデータで埋めます。出力には、各「チャンク」の std::vector が含まれます。
基本的に、これに対する私の結論は、コードをそのままにしておく方がはるかに簡単で、クリーンで、短いということでした。
編集:
したがって、私が想像していた私の質問に対する最も近い答えは次のとおりです。
それでも、そのコードはコンパイルされません。コンパイルできるようにコードにいくつかの変更を加えましたが、2 つの問題が発生しました。
- _ 1 はスマート ptr であり、std::distance は機能しませんでした。開始点として &chunks[0] を使用する必要があったと思います
- _ 1 はスマート ポインターであるため、次のことを行う必要がありました。
zip_ iterators に関する答えは、さらに詳しく読んで、この特定の用途に必要な余分なコードの量がかなりのものであることを発見するまで (これとあれをバインドするなど)、良さそうに見えました。
EDIT2:
ここと下に投稿した、余分な構文が少なく、明確な許容可能な解決策を見つけました。
c++ - Boost.Lambda: 別のデータ構造に挿入する
にvector
挿入したい がありset
ます。これは 3 つの異なる呼び出しのうちの 1 つです (他の 2 つは を含むより複雑ですboost::lambda::if_()
)、この単純なケースを解決することは、他の問題を解決するのに役立ちます。
残念ながら、これは変換エラー メッセージ (に変換しようとしています) で失敗しboost::lambda::placeholder1_type
ますstd::string
。
それで...これの何が問題なのですか?
c++ - ラムダの戸惑いを後押し
コールバックが1回だけ呼び出されるのはなぜですか?
c++ - ラムダコレクションサイズの評価を後押し
私は次の形式の関数を持っています:
この関数はいくつかの作業を行い、条件が真の場合にのみ戻ります。コールサイトごとに異なる条件を提供したいので、条件はファンクター引数として表現されています。
さて、これを直接使用するのはかなり簡単ですが、多くの小さな使い捨て関数またはファンクターオブジェクトを宣言する必要があります。これは、可能であれば避けたいと思います。私はこれらをなくすための可能な方法についてBoostのラムダライブラリを調べてきましたが、基本的なものが欠けていると思います。やりたいことができない。
現時点で私を困惑させている1つのケース:私は;std::vector
と呼ばれるコレクションを持っています。data
私が求めているのはsize()
、そのコレクションのが特定のしきい値に達したときです。基本的に、condition
ファンクターがtrueを返し、それ以外のdata.size() >= threshold
場合はfalseを返すようにします。しかし、ラムダ構文でそれを表現するのに苦労しています。
私がこれまでに思いついた最高のもの(少なくともコンパイルされますが、動作しません)は次のとおりです。
に入るとDoSomething
、サイズは0になります。実行中にサイズが大きくなっても、呼び出しはcondition()
常にサイズが0になるように見えます。これをトレースすると(Boostの内部では少し注意が必要です)、評価されるgreater_equal
たびに呼び出しているように見えますが、呼び出してcondition()
いるようには見えませんsize()
。
それで、私が完全に台無しにした基本的なことは何ですか?この種のことを表現するためのより簡単な方法はありますか(コードを可能な限りインラインに保ちながら)?
理想的には、C#と同等のコードの流暢さにできるだけ近づけたいと思います。
c++ - 入れ子の問題 boost::lambda::bind-s
私は一般的な機能を持っています:
私は正常に呼び出すことができます:
次に、特定のフォーマットをサムネイルに追加するのではなく、それらすべてを 1 つのフォーマットに置き換える必要があります。より正確には、次のように 1 つの要素のリストを使用します。
その結果、「boost/lambda/detail/actions.hpp(96): error C2665: 'boost::lambda::function_adaptor::apply': none of the 2 overloads could convert the all argument types".
ここで何が間違っていますか?
ところで
c++ - boost::lambda_を使用して文字列の空白を圧縮する
私はboost::lambdaを使用して、文字列内の後続の空白を削除し、スペースを1つだけ残しています。このプログラムを試してみました。
コメント付きの行は正常に機能しますが、コメントなしの行は機能しません。
お元気ですか
と違う
上記のプログラムで。コメントされたものは、「警告C4805:'==':タイプ'bool'とタイプ'constchar'の安全でない組み合わせが動作中です」という警告も表示します。
ありがとう。
boost - boost :: lambda :: llはどこにありますか?
boost_1_39_0ディストリビューションのヘッダーファイルでネストされたll::for_each()呼び出しのboost :: lambda::llが見つからないようです。誰かが私を正しい方向に向けることができますか?ありがとう。
c++ - C++: std::less の使い方boost::bind と boost::lambda で?
boost::bind、boost::lambda ライブラリと、それらを STL アルゴリズムで使用する方法を学習しようとしています。int キーでソートされた int-string ペアのベクトルがあるとします。次に、ベクトルをソートしたまま新しいペアを挿入する場所は、次のように見つけることができます。
operator<
ここで、関数オブジェクト (std::less<int>
この例の型)に置き換えたいと思います。
上記のコードを変更して機能させるにはどうすればよいですか? 私はただすることはできません
std::less<int>::operator()
の戻り値の型が何であれ、受け入れないためですboost::bind
。ここで何が欠けていますか?ティア