bind2nd、bind2nd、bind1stの使い方は?より具体的には、いつそれらを使用するのか、そしてそれらは必要ですか?また、私はいくつかの例を探しています。
1446 次
2 に答える
5
厳密に言えば、これらは決して必要ではありません。独自のカスタムファンクターオブジェクトをいつでも定義できるからです。しかし、単純なケースでカスタムファンクターを定義する必要をなくすために、これらは非常に便利です。たとえば、であるアイテムをカウントしたいとします。もちろんコードを書くことができます...:std::vector<int>
> 10
std::count_if(v.begin(), v.end(), gt10())
定義後:
class gt10: std::unary_function<int, bool>
{
public:
result_type operator()(argument_type i)
{
return (result_type)(i > 10);
}
};
ただし、代わりに、コーディングがどれほど便利かを検討してください。
std::count_if(v.begin(), v.end(), std::bind1st(std::less<int>(), 10))
補助ファンクタークラスを定義する必要はありません!-)
于 2009-09-21T16:18:30.623 に答える
1
バインダーは、カリー化を行うC++の方法です。ところで、 BoostBindライブラリをチェックしてください
于 2009-09-21T18:00:41.620 に答える