C++学习笔记(21):谓词

0 阅读1分钟
  • 返回bool类型的仿函数称为谓词
  • 如果operator()接受一个参数,那么叫一元谓词
  • 如果operator()接受两个参数,那么叫二元谓词

一、谓词是什么

  • 返回 bool 的函数/仿函数,用来做判断、筛选、排序规则
  • 常用于: find_if  /  count_if  /  sort  /  for_each  等算法

 

二、分类(核心)

  1. 一元谓词
  • 参数只有 1 个
  • 用途:判断单个元素

cpp

   bool func(int val) { return val > 5; }

 

  1. 二元谓词
  • 参数 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的判断规则,一元查单个,二元比两个,算法里当条件用。