[C++]関数オブジェクト

3221 ワード

C++はCの95%を含む.
しかし、その代替品はほとんど存在する.
C++を使用する場合は、パフォーマンスの問題以外にC++を使用する必要があります.
C上の時間測定はtime.hclock()の関数の差で求めることができる.
C++はchronoライブラリを使用できます.
このように代替本が存在し、
Cの関数ポインタはC++で関数オブジェクトに置き換えられる.
これは,関数ポインタの非インライン化に取って代わるためである.
関数オブジェクトの必要性や使い方は他のブログにもたくさんありますので、検索してみてください.
ここでは、関数オブジェクトをパラメータとして受信する方法について説明します.
    #include<iostream>
    #include<algorithm>
    using namespace std;
    struct FClass{
    public:
     void operator() ()const{
      cout << "Hello, World" << endl;
     }
    };
    template<class _Pr>
    void Foo(_Pr fred) {
     fred();
    }
    int main() {
     Foo(FClass());
     return 0;
    }
簡単な関数オブジェクトが作成されました.
パラメータとして関数オブジェクトを受け入れる関数Fooを定義します.
以上のように、関数オブジェクトをパラメータとする方法は、templateを用いて実現される.
ネットで探しても見つからなかったので、algorithmsort宣言を見て、結局答えが見つかりました!