問題タブ [function-object]
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++ のファンクターについてよく耳にします。誰かがそれらが何であるか、そしてどのような場合に役立つかについての概要を教えてもらえますか?
c++ - 比較のために関数オブジェクトを宣言しますか?
私は他の人の質問を見たことがありますが、私がここで達成しようとしていることに当てはまるものは見つかりませんでした。
std::sortとaを使用してEntityManagerクラスを介してエンティティを並べ替えようとしていますstd::vector<Entity *>
次のようなエラーが多数発生します
よくわかりませんが、ENTITY_VECTORはですstd::vector<Entity *>
。これが、compareByX関数オブジェクトを使用するときに問題になる可能性があるかどうかはわかりません。
私はC++にかなり慣れていないので、どんな種類の助けも歓迎します。
javascript - メソッドoperator()をオブジェクトに割り当てます
私は実際のプロジェクトでこの問題を抱えています。
「オブジェクト」をJavaScriptの関数に変換する方法は?
少なくともスティーブが「メソッドoperator()をオブジェクトに割り当てる」と言ったように、私は必要です。オブジェクトが複雑すぎてJavascript内で作成されないため、再割り当てはオプションではありません。
オブジェクトxがあります(関数ではありません)。そして、私はこのようにメソッドを呼び出したい
apply
とメソッドを追加しようとしましたcall
が、機能しませんでした。Javascriptは常に「関数ではない」ことを覚えているようです(それは私がいつも得るエラーです)。これを達成するためにSpidermonkeyエンジンを「ハック」する方法はありますか?
c++ - C ++では、コンパイラが関数オブジェクトを「インライン化」するとはどういう意味ですか?
関数オブジェクトに関するウィキペディアの記事では、コンパイラーがそれらを「インライン化」できるため、for_eachとともに使用すると、そのようなオブジェクトにはパフォーマンス上の利点があると述べています。
私は、これがこの文脈で何を意味するのか、または私が言うのが恥ずかしい文脈で、少し曇っています。助けてくれてありがとう!
c++ - 「関数呼び出し」演算子をオーバーロードするとどのように役立ちますか?
私は最近、C++ で「関数呼び出し」演算子をオーバーロードできることを発見しました。そのためには、2 対の括弧を書かなければならないという奇妙な方法があります。
そして、次のように使用します。
これはいつ役に立ちますか?
c++ - C++ で関数オブジェクトを使用するのはいつですか?
関数オブジェクトは、STL アルゴリズムと一緒によく使用されます。関数オブジェクトは、これらのアルゴリズムのおかげで生まれましたか? C++ で関数オブジェクトを使用するのはいつですか? その利点は何ですか?
c++ - 関数オブジェクトと関数ポインタ
関数オブジェクトと関数ポインタに関する 2 つの質問があります。
質問1
STLのさまざまな用途のアルゴリズムを読むsort
と、3 番目のパラメーターが関数オブジェクトになる可能性があることがわかります。以下に例を示します。
質問 :
さて、ステートメントはどのように機能しsort(union, union+50,PopLess())
ますか? 一時オブジェクトで関数を実行するのと同じPopLess()
ようなものに解決する必要があります。これは、 (私の例のように)オーバーロードされた操作の戻り値をアルゴリズムに渡すことだと思います。PopLess tempObject.operator()
operator ()
bool
sort
では、この場合、並べ替え関数はどのように 3 番目のパラメーターを解決しますか?
質問2
質問
関数オブジェクトを使用することと、関数ポインターを使用することには、何か特別な利点がありますか? 以下の関数ポインターを使用すると、不利な点が導き出されますか?
PS : 上記の両方の参照 (例を含む) は、"Stephen C. Dewhurst" による書籍 "C++ Common Knowledge: Essential Intermediate Programming" からのものです。
トピックの内容を解読できなかったため、ヘルプを投稿しました。
よろしくお願いします。
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番目のケースです
呼び出しごとに新しいファンクターが作成されることを意味しますか、それとも呼び出しごとにファンクターが使用されますか?
c++ - テンプレートと関数オブジェクト - C++
このクラスに問題があります。
目標は、メイン関数を適切に機能させることです。コードが機能するように、「And」関数オブジェクトを実装することになっていました。私たちのソリューションの何が問題なのかわかりません。
(ソリューションの開始と終了は、「メイン」関数の前のコード内のコメントでマークされています)
助けていただけますか?
ありがとう