問題タブ [functor]

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 投票する
2 に答える
1375 参照

c++ - boost :: bindを使用して関数を効果的に連結することは可能ですか?

typeと呼ばれる任意のシグネチャを持つboost::functionがあると仮定しCallbackTypeます。

  • boost::bindCallbackTypeと同じ引数を取りながら、2つのファンクターを連続して呼び出す関数を作成するために使用することは可能ですか?

私はどんな潜在的な解決策にもオープンですが、ここに...

magic...いくつかのテンプレートを使用した架空の例:

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

c++ - C ++のテンプレート、ファンクター、コールバック関数の練習問題?

私はこの 1 週間、テンプレート、ファンクター、コールバック関数を読んでいて、いくつかの良い本や記事を参照しました。

ただし、テンプレートでのプログラミングやファンクター コールバックの使用などの優れた実践ができない限り、すべての概念を本当に理解したり、コーディング中にそれらを流暢に使用したりすることはできないと感じています。

問題の定義とその解決策が記載されている記事、本、またはウェブサイトを誰か提案できますか。問題のコードを書いて、後で解決策が十分かどうかを確認することができます..

また、スタック オーバーフロー メンバーの一部がテンプレートとコールバック関数の専門家であることも認識しています。私のような多くのテンプレート初心者が恩恵を受けることができるように、彼らが問題を設計し、解決策を投稿できれば素晴らしいと思います.

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

c++ - Pythonを介してC++オブジェクトをC++コードに渡しますか?

私はC++でいくつかの物理シミュレーションコードを作成しましたが、入力テキストファイルの解析がボトルネックになっています。入力パラメータの1つとして、ユーザーは実行時に何度も評価される数学関数を指定する必要があります。C ++コードには、このためのいくつかの事前定義された関数クラス(実際には数学側では非常に複雑です)といくつかの制限された解析機能がありますが、この構造にはまったく満足していません。

私が必要としているのは、アルゴリズムと関数の評価の両方が高速なままであるため、両方をコンパイル済みコードとして(できれば、数学関数をC ++関数オブジェクトとして)保持することが有利です。ただし、シミュレーション全体をPythonと一緒に接着することを考えました。ユーザーは、Pythonスクリプトで入力パラメーターを指定できると同時に、Pythonでストレージ、結果の視覚化(matplotlib)、およびGUIも実装できます。

ほとんどの場合、C ++クラスの公開は、たとえばSWIGを使用して実行できることを知っていますが、Pythonでのユーザー定義の数学関数の解析に関してはまだ質問があります。

どういうわけかPythonでC++関数オブジェクトを作成し、それをC ++アルゴリズムに渡すことは可能ですか? たとえば、私が電話するとき

Pythonでは、C ++オブジェクトへのポインタを返し、そのポインタを必要とするC ++ルーチン、または同様のものに渡されます...(この場合、メモリ管理については聞かないでください:S)

重要なのは、アルゴリズム内のPythonコードに対してコールバックを行わないことです。後で、この例を拡張して、関数の合計や積など、Python側でいくつかの単純な式の解析を行い、C ++オブジェクトのような複合解析ツリーを返しますが、ここでは基本にとどまります。

長い投稿と事前の提案のためのthxをお詫び申し上げます。

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

c++ - How does calling this function object work?

I have a class

If I invoke func like

Method 1:

the message I wanted to print is printed.

I was always thinking I needed to do something like

Method 2:

How does Method 1 work? I mean what exactly happens?

And how is a call made to the operator() in class fobj ?

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

scala - 「パラメータ化された型を存在的に抽象化することはできません...」

私は楽しみのために Scala 2.8 をいじり、型コンストラクターに「as」メソッドを追加して、あるファンクターから別のファンクターに変換できるpimpを定義しようとしていました (ここで必ずしもファンクターを扱っているわけではないという事実を見落としてください)。 . たとえば、次のように使用できます。

だからここに私がやろうとしたことがあります:

ただし、 の定義には、 「パラメータ化された型 G[T] を実存的に抽象化できません」naturalTransformationsというエラーが表示されます。これを修正するには、次のように追加のクラスとともに書き直すことができます。naturalTransformationsTransformable

そしてそれはうまくいくようです。しかし、私の最初の試みは同等だったはずなので、なぜ失敗したのか、エラーメッセージが何を意味するのか興味があります.

0 投票する
6 に答える
4202 参照

c++ - STLのファンクターを理解する

NM Jousttis の「The C++ Standard Library」セクション 5.9 からの引用


ここで、式 AddValue(10) は、値 10 で初期化されるタイプ AddValue のオブジェクトを作成します。AddValue のコンストラクターは、この値をメンバー theValue として格納します。for_each() 内では、coll の各要素に対して "()" が呼び出されます。繰り返しますが、これは、渡された AddValue 型の一時関数オブジェクトに対する operator () の呼び出しです。実際の要素が引数として渡されます。関数オブジェクトは、その値 10 を各要素に追加します。要素は次の値を持ちます: 10 を追加した後:

for_each() の 2 回目の呼び出しでは、同じ機能を使用して、最初の要素の値を各要素に追加します。コレクションの最初の要素で AddValue 型の一時関数オブジェクトを初期化します。

最初の要素を追加した後の出力は次のようになります。


私が理解していないのは、出力がそうでない理由である2番目のケースです

呼び出しごとに新しいファンクターが作成されることを意味しますか、それとも呼び出しごとにファンクターが使用されますか?

0 投票する
4 に答える
2255 参照

c++ - C ++:ファンクターにLokiまたはBoostを使用していますか?

私はAlexandrescuの本、Modern C ++ designを読んでいて、彼が使用しているテクニックに非常に感銘を受けたので、Lokiライブラリをアプリケーションに追加したいと思いました。

ただし、さらに調査したところ、すでに使用しているブーストが多くの同様の機能を提供していることがわかりました(ただし、すべてではありませんが、たとえば、ブーストでシングルトンを見つけることができませんでした)。

ポリシーベースのデザインとファンクターのため、私は主にロキの使用に興味を持っていました。

私にとって、ブーストとロキには長所と短所があります。私がlokiに関して抱えている主な懸念は、ドキュメントが貧弱なことです(ライブラリはもう本に縛られていません)が、一部の領域では、lokiはブーストよりも強力で柔軟性があるようです(私はそれについて間違っているかもしれません)

ファンクターやポリシーにブーストやロキを使用する前に、実際にそれらを使用している人々の意見を知りたいと思います。

紙の上では見た目がとても良い場合もありますが、実際に使用するといくつかの欠点があります:)

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

c++ - Boostテンプレートパラメータに見られるC++の奇妙な構文

Boostの「Function」クラスのドキュメントを見ていて、これに出くわしました。

この構文は私にとって非常に混乱していることを認めなければなりません。これはどのようにして合法的なC++になりますか?

ボンネットの下に何かトリックはありますか?この構文はどこかに文書化されていますか?

0 投票する
10 に答える
5052 参照

haskell - Haskellファンクターを沈めましょう。

Learn YouaHaskellにはファンクターについての例があります。私はLYAHとテキストを読んで、何が起こるかを理解することができます-しかし、私はこのようなものを書くのに十分なことを知りません。私はこの問題をHaskellでよく見かけます。

しかし、私は混乱しています..なぜこれは完了しないのですか

が最上位の定義で使用されていない場合f、他に何が制約されxて満たすことができないかLeft

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

function-pointers - boost :: functionおよびplain関数ポインター:あいまいなオーバーロード

次のメンバー関数のオーバーロードが与えられ、さまざまなファンクターを取得します

と機能

では、なぜbazの単純な関数ポインタを取るのでしょうか。

このエラーが発生します:

このあいまいさを解決する方法は?