0

binder2ndから導出されunary_functionます。

次のコード スニペットは機能しません。

greater<int> g;

    //greater is derived from binary_function

//bind2nd returns binder2nd object and binder2nd is derived from unary_function

const unary_function<int,bool> &greater_than_0 = bind2nd(g, 0);

    // base class reference type holding reference to derived class object

remove_if(lst.begin(), lst.end(), greater_than_0);
    //does not work

一方、次のコード スニペットは機能します。

greater<int> g;

const binder2nd< greater<int> > &greater_than_0 = bind2nd(g, 0);

remove_if(lst.begin(), lst.end(), greater_than_0);

unary_function最初のコード スニペットが機能するように、ダミーの仮想関数を含めると役に立ちますか。それはSTLの使用を改善できますか?

4

1 に答える 1

2

unary_function派生クラスにいくつかの typedef を追加する便利な型です。ポリモーフィックではありません。クラス定義の基底クラス以外の名前で言及するコードを書くと、ほぼ間違いなく間違いを犯します。

于 2013-03-08T14:01:20.070 に答える