3

タイトルに書かれていることをどうやって実装するのか気になります。私は次のようなことを試しました...

std::for_each( a.begin(), a.end(), std::mem_fun_ref( &myClass::someFunc ) )

someFuncしかし、「term」(私は3番目の引数を意味すると仮定しています)は、 1つの引数(に格納されているオブジェクトのタイプ)を取りますが、1つの引数を持つ関数に評価されないというエラーが表示されaます。

私がやろうとしていることは、標準ライブラリを使用して可能かどうか疑問に思っています(ブーストを使用して簡単に実行できることはわかっています)。

PS手動で繰り返し処理してオブジェクトをに渡す場合と比較して、使用for_eachmem_fun_refてパフォーマンスに影響がありますか?asomeFunc

4

2 に答える 2

2

someFuncは1つのパラメーターを持つメンバーですが、mem_fun_refは「myClass」の暗黙の最初の引数を使用します。ベクトルの項目を2番目の引数として使用します。

また、for_eachとmem_fun_refを使用しても、パフォーマンスに悪影響はないでしょう。コンパイラは同等のコードを生成します。しかし、確実にする唯一の方法はベンチマークすることです:)

  std::for_each(a.begin(), a.end(),
                std::bind1st(
                    std::mem_fun_ref( &MyClass::SomeFunc ),
                    my_class ));
于 2010-04-04T02:46:47.333 に答える
1

隠された「this」引数を提供するには、bind_1stを使用する必要があると思います。それとも、「this」引数が唯一のものであり、someFuncには独自のパラメーターがないということですか?

于 2010-04-04T02:17:33.877 に答える