問題タブ [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 投票する
3 に答える
347 参照

c++ - C++ ファンクター - 予期しない動作?

ファンクターを使用していくつかの int をソートするこのプログラムを作成しました。

並べ替えは正常に機能しますが、比較の数をカウントする部分では、予期しない結果が得られます。

私は構造が再利用され、比較の数を数えて保存すると思っていました。ただし、出力された数字が 1,2,3,4,5 ではなく 1,1,1,2,3 になるため、それをコピーするか、その他の動作をしているように見えます。私は何を間違っていますか?

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

c++ - ネストされたファンクターを渡す(C ++)

mainの外でfoo_を渡す方法はありますか?ファンクターに関する別の質問で、ブーストについて何かを見ました。それはうまくいくようです。これがその質問でブーストに言及している答えですできれば、ブーストは避けたいです。

0 投票する
3 に答える
1028 参照

c++ - C ++でいくつかのクラスに共通のファンクターを実装する方法

プライベート メンバー ベクトルを持つ 2 つ (またはそれ以上) のクラスがあるとします。

そして、状態を持ち、汎用ベクトルで機能するファンクタークラスがあります(要素の並べ替えやカウントなどを行います)。ファンクターの状態は、ファンクターが作業している最初のベクトルによって初期化されます。ファンクターが後で別のベクターに適用される場合、状態に応じて動作が変わります (同じ方法でソートするか、最初のベクターと同じ数の要素の後に 2 番目のベクターをトリミングするなど)。

プライベートベクターを他のクラスまたはクラスのユーザーに公開せずに、そのようなファンクター (設計パターンまたは関数インターフェイス?) を実装する最良の方法は何ですか?

例: ユーザーは、クラス A のオブジェクトでこのファンクターを初期化し、クラス B の 1 つまたは複数のオブジェクトに対してこの初期化されたファンクターを使用したいと考えています。ユーザーはプライベート ベクトルを使用できません (使用すべきではありません)。ファンクターの関数引数として直接。

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

java - 関数を繰り返す

Javaでこのようなことは可能ですか?

私はほんの一握りの関数を呼び出していますが、次のように構成する必要があります。

そして、何百行もの関数呼び出しを書き出すことは避けたいと思います。

関数ポインターとファンクターを調べてみましたが、適切なものは見つかりませんでした。

0 投票する
3 に答える
3457 参照

c++ - 比較関数内での非静的クラス メンバーの使用

私は現在、コードの時点で、演算子に関する情報を保持する構造体をソートする必要がある構文アナライザー クラスを開発しています。各演算子には優先度があり、アナライザー クラスのパブリック メンバー関数を介してユーザーが定義します。したがって、並べ替えるときは、対応する演算子の優先度に基づいて要素を並べ替えるための並べ替え関数が必要です。次のコードを使用して要素を比較しています。

この関数はクラス内で定義されているため、静的にする必要があることに注意してください。

実際、私の比較関数は type の要素を比較し、フィールド「priority」を持つop_chartype の要素を含むマップから演算子 def を取得します。op_def

私が直面している問題は、なんとか使用できないことですstd::sort(ops.begin(), ops.end(), std::mem_fun_ref(&parser::op_comp))(ここで ops はvector of op_info)メソッドです。次のエラーが表示されますが、これは非常に論理的に聞こえます:

エラー: 静的メンバー関数でのメンバー 'parser::operators' の使用が無効です

これが私の質問です: std::sort に、クラスの非静的メンバーからの要素を利用する comp 関数を強制的に使用させるにはどうすればよいですか? 明らかに関数は非静的であるべきですが、静的にしないとうまく使えません...

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

c++ - STL と単項関数を適用したファンクターを使用してリスト メンバーシップをチェックする

要素の順序を無視して、2 つの std::pair 項目とそれらの等価性をテストする簡単なユーティリティ ファンクターを作成しようとしました。さらに (ここで問題が発生します)、これらの std::pair アイテムのコンテナーを取得し、コンテナー内の特定のペア引数のメンバーシップをテストする関数を作成しました。

ジェネリック コンテナーの選択を許可するクリーンな方法が思いつかなかったので、現時点では std::vector をコンテナー タイプとしてハードコーディングしました。コンテナー タイプをジェネリックにするためのヘルプもいただければ幸いですが、今のところ、上記をコンパイルして動作させたいと思います。私が得るエラーは次のとおりです。

提案されているように「typename」を追加してコードを変更すると、次のエラーが発生するだけです。

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

c++ - ファンクターを関数ポインターとして渡す

C++ アプリで C ライブラリを使用しようとしていますが、次のような状況に陥っています (C は知っていますが、C++ は初めてです)。C 側には、関数ポインターを引数として取る関数のコレクションがあります。C++ 側では、C 関数が必要とする関数ポインターと同じシグネチャを持つファンクターを持つオブジェクトがあります。C 関数に渡す関数ポインタとして C++ ファンクタを使用する方法はありますか?

0 投票する
3 に答える
771 参照

c++ - C++ のメンバー関数への関数ポインター

関数ポインターを期待するメソッドを呼び出す必要がありますが、実際に渡したいのはファンクターです。これが私がやろうとしていることの例です:

最後の行、printer(g, 4) をコンパイルする方法を見つけることができませんでした。これを機能させる方法はありますか?私のコントロール内にあるのは、メソッド「main」とクラス「adderClass」だけです。

0 投票する
3 に答える
309 参照

haskell - fmap の書き込みに問題がある

このタイプの fmap を書き込もうとしています

ここで、ポイントは次のように定義されます

そして、私のインスタンス定義は

次のコンパイル エラーが発生し、その理由がわかりません

何か案は?

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

c++ - C ++のデリゲートとはどういう意味ですか?

c ++のデリゲートとはどういう意味ですか?最後のパラメーターがデリゲートの形式であるため、比較関数/ファンクターを受け取るc / c ++のソート関数はありますか?