今天看到<<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函数的对象。这两个适配器函数都用于将一个二元算子转换成一个一元算子。
</

本文介绍了C++ Primer书中一道关于使用bind1st和bind2nd的问题,阐述了如何利用这两个适配器函数与标准库函数对象来统计大于特定值的元素个数。通过示例,解释了bind1st如何将二元操作符转换为一元操作符,用于判断vector元素是否大于100,并展示了不同情况下的应用。
最低0.47元/天 解锁文章
483

被折叠的 条评论
为什么被折叠?



