Functionオブジェクト--functionオブジェクト

テンプレート<型名T>

クラスLESS_THAN {

    Tヴァルのconst; // valのと比較します

公衆:

    LESS_THAN(CONST T&V):のval(V){}

    ブール演算子()(CONST T&X)のconst {リターンX <ヴァル;} //コールオペレータ

}。

LESS_THAN <整数> LTI {42}。// LTI(i)が使用して42に私を比較します<(I <42)

LESS_THAN <ストリング> LTS { "バッカス"}。使用した "バッカス" へのを比較​​します// LTS(S)<(S < "バッカス")

無効FCT(int型nは、constの文字列&S)

{

    BOOL B1 = LTI(N)。// trueの場合、N <42;

    BOOL B2 = LTS(S)。//真の場合は、<「バッカス」

    // ...

}

テンプレート<typenameにC、型名P>

int型のカウント数(定数C&C、Pはpredを)

{

    int型CNT = 0;

    (:Cのconstオート&x)のための

        もし(predは(X))

            ++ CNT;

    CNTを返します。

}

空はf(constのベクトル<整数>&VEC、constのリスト<文字列>&LST、int型のx、constの文字列&S)

{

    COUT << "値の数未満で" << X << ":" <<カウント(VEC、LESS_THAN <整数> {X})<< '\ n' は、

    COUT << << S << "未満の値の数" ":" <<カウント(LST、LESS_THAN <ストリング> {S})<< '\ n' は、

}

またはラムダ式は次のとおりです。

空はf(constのベクトル<整数>&VEC、constのリスト<文字列>&LST、int型のx、constの文字列&S)

{

    COUT << "値の数未満で" << X << ":" <<カウント(VEC、[b](int型A){<X返す;})<< '\ n' は、

    COUT << "値の数未満で" << S << ":" <<カウント(LST、[b](CONST文字列&){<Sを返す;})<< '\ n' は、

}

ラムダ式について:

テンプレート<クラスC、クラスオペラ>

空for_all(C&C、オペラopが)// Cは、ポインタのコンテナであることを前提としてい

{

    (C:オート&x)のための

        OP(* x)は、//パスOP()各要素への参照を指摘

}

空のユーザー()

{  

    ベクトル<unique_ptrを<形状>> V;

    しばらく(CIN)

        v.push_back(read_shape(CIN))。

    for_all(V、[](形状&S){s.draw();}); // draw_all()

    for_all(V、[](形状&S){s.rotate(45);}); // rotate_all(45)

}

おすすめ

転載: www.cnblogs.com/lhb666aboluo/p/12630412.html