13.5.1 谓词
2025年09月26日
13.5.1 谓词
返回bool类型的仿函数称为谓词。前面讲述的关系仿函数和本节讲述的逻辑仿函数都属于谓词。头文件<functional>包含以下两个仿函数:
一元谓词和二元谓词在算法中是非常有用的。尤其在比较两个序列时,谓词可用于寻找某个序列中的第一个不小于在另一个序列里的对应元素的元素。
算法mismatch()会反复地将其二元谓词作用于各对应元素,直到比较失败为止。之所以使用less<int>()而不是less<int>,是因为此处需要的是一个对象,而不是型别。若需要寻找的不是第一个不小于另一个序列中的对应元素的元素,而是第一个比对应元素小的元素,则可以设法寻找第一个使与之相反的比较谓词失败的对。
C++标准程序库提供的常用谓词见表13-3。
表13-3 常用谓词
除了标准库中的谓词之外,程序员还可以自己编写自定义谓词。自定义谓词对于使用标准库和标准算法是非常有利的。尤其在使用标准库算法时,对于自定义的数据结构类型标准算法有时无法识别,此时只好使用自定义的仿函数解决问题。