今天看到<<C++ Primer>>一书课后习题14.42,问题如下:
使用标准库函数对象及适配器定义一条表达式,令其:统计大于1024的值有多少个。
解题利用标准库函数对象类greater<int> 答案为:
count_if(vec.begin(),vec.end(),bind2nd(greater<int>(),1024));
这样就牵扯出了bind1st 和 bind2nd 这两个捆绑函数。
这两个适配器函数和标准库函数对象类都是定义在functional头文件中的,其中,bind是捆绑的意思,1st和2nd分别是first和second的意思。
两者函数声明如下:
bind1st(const Operation& op, const T& x)
bind2nd(const Operation& op, const T& x)
bind1st函数代表这么一个操作: x op value; bind2nd函数代表:value op x。
其中,value 是被应用bind