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

c++ - Sort function does not work with function object created on stack?

why is obj2 in second sort function leads to compiler error.

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

c++ - C++ で structarray マップ ファンクターをコーディングする最も明確な方法

これは、何かを行うための最も読みやすい方法に関する意見の投票です。C++ のメンバーへのポインター、バイト オフセット、またはテンプレート化されたファンクターを使用して「構造体 foo からメンバー X を選択する」を定義するかどうかです。

構造体の大きなベクトルを含む型があり、基本的にそれらのいくつかの範囲でreduceとして動作するユーティリティ関数を作成しています。各構造は、従属変数のグループを独立した次元に沿ったいくつかの点に関連付けます。簡単な例を考え出すために、これが時間の経過に伴う部屋の一連の環境条件を記録すると想像してください。

私の関数は、3 次補間を実行して、使用可能なサンプル間の特定の時点での条件を推測するだけです。

この関数を一般化して、温度だけでなく、任意のメンバーに一般的に適用できるようにしたいと思います。これを行うには 3 つの方法が考えられます。どれも簡単にコーディングできますが、1 年後にこれを使用する必要がある人にとって、どの方法が最も読みやすいかはわかりません。ここに私が考えているものがあります:


メンバーへのポインターの構文

これは最も "C++ らしい" 方法のように感じますが、奇妙に見えます。また、メンバーへのポインター構文全体がほとんど使用されないため、私のチームのほとんどの人はほとんど理解していません。これは技術的には「正しい」方法ですが、私が最も混乱するメールを受け取る方法でもあります。

構造物のオフセット

これは機能的には上記と同じですが、ポインター計算を明示的に行います。このアプローチは、私のチームの全員 (全員が C++ の前に C を学んだ) にすぐに馴染み、理解できるものになるでしょう。

テンプレート化されたファンクター

これは、最も単純で STL っぽい方法ですが、余分な型付けと構文、即席のクラス定義が大量にあるように思えます。上記の2つとほぼ同じものにコンパイルされますが、実行可能ファイル全体に冗長な関数定義の束もダンプされます. (私はこれを/FAcsで確認しましたが、リンカーがそれらを再び取り出す可能性があります。)


上記の 3 つすべてが機能し、コンパイラはそれらすべてに対してほぼ同じコードを発行します。したがって、私がしなければならない最も重要な選択は、単純にどちらが最も読みやすいかということです。どう思いますか?

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

c++ - ファンクターを使用したウィンドウのサブクラス化(Win32)

クイックサニティチェック:ファンクターを使用してウィンドウをサブクラス化することは可能ですか?win procでデータを利用できるようにしたいという状況に遭遇していますが、GWLP_USERDATAはすでに使用されています。ファンクターは良い代替手段のように思えますが、私はそれを機能させるのに苦労しています。

基本は次のとおりです。

すべてうまくいっているように見えますが、メッセージポンプでDispatchMessage()を押すと、「違反書き込み場所0x00000000にアクセス」します。これは明らかに良い兆候ではありません。上記のコードへの呼び出しを削除すると、人生は再び幸せになります。:(それで、これは可能でさえありますか、それとも私はそれを完全に間違った方法で行っていますか?

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

data-structures - 無向グラフを表現するのに適したデータ構造は何ですか?

無向グラフを作成する必要があります。あまり派手なことをする必要はありませんが、理想的には次のように機能します。

これらの関係をモデル化するための SML/NJ の適切なデータ構造はありますか? 私は自分で巻くべきですか?

アップデート

先に進んで自分でロールしようとしましたが、テストしようとすると型の不一致エラーが発生します。私の SML 構造とファンクターの経験はかなり基本的なものなので、明らかに間違ったことをしていると思います。これを機能させるにはどうすればよいですか?また、これを作るのを手伝ってもらえます'a graphか? 意味的には、それはより理にかなっているようです。

コード

エラー

私がする時

タイプの不一致が発生します:

0 投票する
7 に答える
1154 参照

c++ - FOR ループの単純化

基本的に double のベクトルから値を読み取り、これらを文字列に追加して (それぞれの間にスペースを確保し、精度を設定しながら)、最終結果から最終的な空白を差し引いたものを返す関数があります。

このコードを何らかの方法で単純化できるかどうかを調べたいと思います。私は最近、特に for_each とファンクターの使用を調査していますが、これらの手法がこの特定の例をどのように改善できるかを理解できていません。

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

c++ - c++ 演算子のオーバーロードと使用法

bool operator()(Iterator it1, Iterator it2) const { return (*it1 < *it2); }

誰かが私のためにこの機能を説明できますか、ありがとう! これは、演算子 () をオーバーロードすることを意味しますか? これをオーバーロードした後、どのように使用しますか?

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

.net - MLファンクターを.NET(C#/ F#)で完全にエンコードできますか?

MLファンクターは、.NETインターフェースとジェネリックスで実際に表現できますか?そのようなエンコーディングに逆らう高度なMLファンクターの使用例はありますか?

回答の概要

一般的な場合、答えはNOです。MLモジュールは、.NETの概念に直接マッピングされない機能(署名による仕様共有[ 1 ]など)を提供します。

ただし、特定のユースケースでは、MLイディオムを翻訳できます。これらのケースには、基本的なSetファンクター[ 2 ]だけでなく、モナドのファンクトリアルエンコーディング[ 3 ]や、最終的にタグレスインタープリター[ 4、5 ]などのHaskellのさらに高度な使用法も含まれます

実用的なエンコーディングには、セミセーフダウンキャストなどの妥協が必要です。あなたのマイレージは警戒します。

ブログとコード:

  1. blog.matthewdoig.com
  2. highlogics.blogspot.com
  3. F#のモナドファンクター
0 投票する
2 に答える
1446 参照

c++ - バインダーとbind2ndファンクターの使い方は?

bind2nd、bind2nd、bind1stの使い方は?より具体的には、いつそれらを使用するのか、そしてそれらは必要ですか?また、私はいくつかの例を探しています。

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

c++ - C++ テンプレート化されたファンクター

誰かがファンクターを手伝ってくれるかどうか疑問に思っていました。ファンクターとは何か、それらがどのように機能するのかをよく理解していません。グーグルで検索してみましたが、まだわかりません。ファンクターはどのように機能し、テンプレートでどのように機能しますか

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

c++ - メンバー関数ポインター型からのファンクターの生成

私は、アリティnmake_fn()のメンバー関数のパラメーターを(経由して)前処理するファンクターの生成を(経由して)単純化しようとしています。 ファンクターの生成は基本的に機能しますが、これまではメンバー関数のパラメーター型を明示的に指定することによってのみ機能していました。 次に、処理するメンバー関数型から正しいファンクターを生成したいと思います。wrap()

Fただし、これにより、vc++およびg++はのパラメーターの型として認識されませんmake_fn()。私はここで明白な何かを見逃さなければならず、やや盲目だと感じています。

アイデアは、次のように機能する必要があるというものでした。

それを機能させる方法について何かアイデアはありますか?

背景:
単純化すると、次のような固定インターフェースがあります。

Xは、特定のバックエンド型(int、std :: string、...)に変換する必要があるバリアント型です。
これらの呼び出しを処理するために、名前で検索されるファンクターのマップがあり、これらの呼び出しをいくつかのインスタンスのメンバー関数にマップします。
ラッピングの目的は、手動変換を回避し、代わりに私またはの変換を行うファンクターを生成することですthrow。私はこれをマクロベースのソリューションで使用していますが、そのソリューションではタイプとパラメーター数を明示的に指定する必要があります。
関数のオーバーロード解決を介して、メンバー関数のシグネチャから暗黙的に正しい変換ファンクターを生成したいと考えています。