問題タブ [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 に答える
177 参照

c++ - 入力ストリームから次の値を読み取るファンクターを作成するにはどうすればよいですか?

このようなもの :

std::bind1st(std::mem_fun(&istream::get ??), cin)。これは私にはうまくいかないようです。

編集:

使用する :

0 投票する
5 に答える
1520 参照

c++ - STL Algorithm for_each がファンクタのデストラクタを 2 回呼び出すのはなぜですか?

私は STL アルゴリズムを試していて、より具体的には for_each 関数を使っていました。文字列のベクトルを連結するための簡単な使用例を試しました。これはおそらく適切で効率的なコードではないことに注意してください。本当に文字列のベクトルを連結したい場合は、boost::algorithm::join 関数を見てください。

連結子クラスは、通常のファンクターとして実装されます。

concatenator.h:

concatenator.cpp:

このプログラムをコンパイルして実行すると、次の出力が得られます。

concat hello to
concat world to hello
concat !!! to hello world
concatenator destructor called
concatenator destructor called
result =
concatenator destructor called

ファンクタから正しい結果を抽出できない理由と、デストラクタが何度も呼び出される理由を誰かが説明できますか?

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

haskell - デフォルトでControl.Monad.Instancesで(->)実装されないのはなぜですか

私はLYAHを読んでいました。Control.Monad.Instances次の構文を機能させるには、明示的にロードする必要があると表示されます。

何故ですか?Control.Monad.Instancesファンクターがこの基盤となる統合テクノロジーである場合、その機能を取得するために明示的にロードする必要があるのはなぜですか。(->)はそれなしでどのように実装されますか(または単に非表示にされて->エクスポートされるだけです)?fmapデフォルトでover関数型の使用が実装されていないのはなぜですか?

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

c++ - C++ ファンクター コールバックのセットアップ

コールバック システムをセットアップするために、newty.deの Lars Haendel のFunctor チュートリアルに従っています。私は少し混乱していますが、誰かが私を助けてくれることを願っています.

これが私のFunctorテンプレートです

私がやりたいことは、基本的に他の .dll が私の HookGameEvent() 関数を使用できるようにすることです。ゲーム イベントが呼び出されたときに、フックの vector||list を実行し、イベント名が一致するかどうかを確認してから、必要に応じてコールバックします。私を混乱させているのは、このような HookEvent 構造体にコールバックを格納する方法です。

今のところコメントアウトしていますが、何が混乱しているのか、どこで失敗しているのかは明らかです。誰かが何か援助を提供できるなら、それは大歓迎です。

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

c++ - C++ クラス メンバーのテンプレート関数とそれをインスタンス化するファンクターを定義する場所は?

小さなスタンドアロンプ​​ロジェクトで使用されるクラス Foo があります。Foo.h にクラス定義があり、実装ファイル Foo.cpp にクラスのメンバー関数が実装されています。

最初の質問 - クラス Foo のメンバー関数の 1 つはテンプレート メソッド Foo::doSomething() です。このメソッドの実装が Foo.h の関数の宣言と共に表示されるのは正しいですか?

Foo::doSomething() がインスタンス化されるテンプレート パラメータは、クラス CalcA と CalcB の 2 つの Functor タイプの 1 つです。

するべきか:

  • (A) 2 つの Functor クラスの定義と実装をすべて Foo.cpp にまとめます (実際には、他の Foo メンバー関数の実装によって Foo::doSomething を呼び出すために使用されます)。
  • (B) 2 つの Functor クラスの定義と実装を Foo.h に配置します。
  • (C) 通常のクラスで行うように、2 つのファンクターの定義と実装を Foo.h と Foo.cpp に分割する必要がありますか?
0 投票する
1 に答える
251 参照

c++ - C++ - クラス テンプレートからメソッドを呼び出す

現在、C++ のクラス テンプレートで問題が発生しています。現在、ハッシュテーブルを作成しています。

テーブルのインスタンスごとにハッシュ関数を指定するクラス テンプレートとしてファンクターを使用しています。

IE: 1 つのテーブルには、キーに整数、値に文字列があります。別のキーには文字列があり、値には整数などがあります...

そして、キーをハッシュするために「myHash」というメソッドを呼び出したいとしましょう。まず、次のようにして呼び出します。

しかし、gcc は、たとえば HashFuntor(string, unsigned int) の関数オーバーロードを検出しません。

myHash を呼び出す方法を教えてもらえますか? (注: ファンクターの構造を変更したくありません)

編集:これは、実際のソリューションから得られるエラーメッセージです

編集: HacheString が実際には HashString であると書かれている箇所はどこでも (コードを翻訳してここに貼り付けました)。

0 投票する
5 に答える
1387 参照

c++ - ファンクターとテンプレートパラメーター

ファンクタースタイルの述語の代わりに静的メンバー関数でテンプレートパラメーターを使用する場合、パフォーマンス上の利点はありますか?

たとえば、ファンクタースタイルのソートインターフェイスは通常、次のようなものです。

このようなことを行うことができ_Pred、静的メンバー関数が含まれている必要があり_Pred::less_thanます。

理論的には、最初のケースはヒープ上に一時的なファンクターオブジェクトを動的に作成する可能性がありますが、2番目のケースはコンパイル時に完全に評価されると思います。(たとえば)gccやmsvcは最適化に優れていることを理解していますが、最初のケースではこれを同じ程度に行うことができますか?

また、私はSTLソートルーチンなどを書き直そうとはしていません。より一般的なファンクターの質問の例にすぎません...

0 投票する
5 に答える
801 参照

c++ - 生のポインターとスマートポインターの両方を受け入れるC++ファンクターを作成できますか?

次の場合:

私はのコンテナを持っており、Foo*を使用std::find_ifして、指定された値とは異なるものを返すstd::not1要素がコンテナ内にあるかどうかを調べます。bar()コードは次のようになります。

将来に向けて早送りすると、今度はを含む別のコンテナができましたstd::tr1::shared_ptr<Foo>。のオーバーロードされたバージョンでファンクターを再利用したいだけですisAllEqual()。しかし、私はできません。 Foo*shared_ptr<Foo>は異なるタイプです。unary_functionそして、を使用できるように、から継承する必要がありますnot1。同じファンクターを2回書くのを避けられれば、もっとエレガントになるでしょう。

質問:

  • IsEqual生のポインターとスマートポインターの両方を使用できるように書く方法はありますか?
  • 使って手錠をかけましたstd::not1か?IsNotEqual代わりに書くべきですか?

制限:

  1. Boostライブラリの何も使用できません。
  2. 私たちのコンパイラは、C++0xラムダをサポートするのに十分なほどクールではありません。
0 投票する
2 に答える
253 参照

c++ - どちらの場合が良いですか?

私はリストを持っていますMyClass

削除する場合はどのような方が良いですか(c ++の設計とパフォーマンス):

また

また

なぜ?

PSお願いします、ラムダ関数とC++0xはありません。

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

stl - std::map を並べ替えるには?

ここに私の地図があります:

PositionMonth構造体です。例:

質問: std::map2 番目の値のキー パラメータ (by market_value_、int とします) で並べ替える方法を教えてください。例またはリンク?

PS。興味のないブースト方法!

PPS。比較ファンクターで std::map を初期化できません!

手伝ってくれてありがとう!


私の解決策(または私が自分でやった方法):

そして機能において:

どこ_EntryですかPositionMonth

終わり!