C++STL库中的find_if的第三个参数只能是一元谓词(即只能传给一元谓词一个参数),但是在设计算法的过程中,需要第三个参数是二元谓词(即需要传给谓词函数两个参数),那么这时候就可以使用bind1st/bind2nd函数适配器,将二元谓词的某一个参数绑定为一个常数,这样二元谓词就变成了一元谓词,find_if只需要传给二元谓词一个参数就也能正常使用。
例如:
1 | //找到数组中第一个大于40的元素 |
将二元谓词greater的第二个参数绑定为40,这样find_if只需要给greater传一个参数与40作比较就可以了(传入greater的参数就是遍历vector元素的迭代器所指向的元素的值)。