Tom*_*Tom 1 c++ functor bind2nd
如何使用binder2nd,bind2nd和bind1st?更具体地说何时使用它们并且它们是否必要?另外,我正在寻找一些例子.
严格来说,它们从来都不是必需的,因为你总是可以定义自己的自定义函子对象; 但它们非常方便,以避免在简单情况下定义自定义仿函数.例如,假设你要计算的项目std::vector<int>是> 10.您当然可以编码...:
std::count_if(v.begin(), v.end(), gt10())
Run Code Online (Sandbox Code Playgroud)
定义后:
class gt10: std::unary_function<int, bool>
{
public:
result_type operator()(argument_type i)
{
return (result_type)(i > 10);
}
};
Run Code Online (Sandbox Code Playgroud)
但请考虑编码更方便,相反:
std::count_if(v.begin(), v.end(), std::bind1st(std::less<int>(), 10))
Run Code Online (Sandbox Code Playgroud)
没有任何辅助仿函数类需要定义! - )
| 归档时间: |
|
| 查看次数: |
1405 次 |
| 最近记录: |