- 返回bool类型的仿函数称为谓词
- 如果operator()接受一个参数,那么叫一元谓词
- 如果operator()接受两个参数,那么叫二元谓词
一、谓词是什么
- 返回 bool 的函数/仿函数,用来做判断、筛选、排序规则
- 常用于: find_if / count_if / sort / for_each 等算法
二、分类(核心)
- 一元谓词
- 参数只有 1 个
- 用途:判断单个元素
cpp
bool func(int val) { return val > 5; }
- 二元谓词
- 参数 2 个
- 用途:比较两个元素(排序、排序规则)
cpp
bool func(int a, int b) { return a > b; }
三、普通函数 vs 仿函数
- 普通函数谓词:直接传函数名
- 仿函数谓词:类重载 operator() ,可以存状态
cpp
struct MyPred {
bool operator()(int val) { return val < 10; }
};
四、用法口诀
- find_if( begin, end, 谓词 ) → 找第一个满足条件
- count_if(...) → 统计满足条件个数
- sort(b,e,二元谓词) → 自定义排序规则
- 谓词只看返回值是 bool,别的不管
五、一句话精髓
谓词 = 返回bool的判断规则,一元查单个,二元比两个,算法里当条件用。