当前位置: 首页 > news >正文

c++谓词

_Pred 谓词            
    很多算法使用函数对象来指定要进行的二元运算,或者指定谓词来确定进行特定运算。谓词是一个返回bool类型的值的函数,因为函数对象是一种类型的对象,实现operator()()成员函数并返回bool类型的值,所以函数对象也是谓词。
谓词(返回bool类型的仿函数)
经过代码验证发现谓词不止用仿函数(函数对象)来定义,用普通函数类型定义就行,主要是返回bool类型
代码验证
#include <iostream>
#include<vector>
#include<algorithm>//算法 头文件

using namespace std;
//统计内置数据类型
//class Greater20//仿函数 
//{
//	public:
//		bool operator()(int val){
//			return val>20;
//		}
//}; 
bool Greater20(int val){
	return val>20;
}
void test01(){
	vector<int>v;
	v.push_back(10);
	v.push_back(40);
	v.push_back(30);
	v.push_back(20);
	v.push_back(40);
	v.push_back(20);
	
	int num=count_if(v.begin(),v.end(),Greater20);//谓词
} 
int main()
{
	test01();
//	test02();
	system("pause");
}

两种结果相同

很多算法使用函数对象来指定要进行的二元运算,或者指定谓词来确定进行特定运算。谓词是一个返回bool类型的值的函数,
因为函数对象是一种类型的对象,实现operator()()成员函数并返回bool类型的值,所以函数对象也是谓词。 

所以关系应该是谓词包括普通函数和仿函数 

再附带一个代码for_each的普通函数和仿函数

#include <iostream>
#include<vector>
#include<algorithm>//算法 
using namespace std;
//常用遍历算法  for_each

//普通函数
void print01(int val){
	cout<<val<<" ";
} 

//仿函数
class print02{
	public:
		void operator()(int val){
			cout<<val<<" ";
		}
}; 
void test01(){
	vector<int>v;	
	for(int i=0;i<10;i++){
		v.push_back(i);
	}
	for_each(v.begin(),v.end(),print01);//始	末	函数名称 [这里传递的是函数指针(放函数名),不是仿函数,所以不加括号]
	//创建仿函数因为重载了(),所以要加()
	
	cout<<endl;
	
	for_each(v.begin(),v.end(),print02());//函数对象 
	cout<<endl; 
} 
int main()
{
	test01();
	
	system("pause");
}

相关文章:

  • 题记(35)--日期累加
  • 2024国际跨境电商展(广州,深圳)两展联动纵深布局新产业
  • 基于Puppeteer实现配置自动化
  • LeetCode——415. 字符串相加
  • 构建高效外卖系统:利用Spring Boot框架实现
  • 三、ElasticSearch集群搭建实战
  • 网络安全知识和华为防火墙
  • Java 面试题之 IO(二)
  • 路由协议解析之静态路由(基于eNSP)(持续更新)
  • Demo: 前端生成条形码并打印
  • 第十四届蓝桥杯C组题目 三国游戏
  • Spring Retry机制详解
  • 鸿鹄工程项目管理系统em Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统
  • vue3封装el-pagination分页组件
  • Python 一些常见的字符串操作
  • 【VS Code+Verilog+Vivado使用】(1)常用插件
  • 【python】爬取百度热搜排行榜Top50+可视化【附源码】【送数据分析书籍】
  • CSAPP shelllab
  • [docker] Docker 网络
  • qemu + vscode图形化调试linux kernel
  • “行人相撞案”现场视频公布,法院:表述不当造成误导
  • 上海科创“八杰”赋能新兴产业链:硬核科技,形成良好盈利模式
  • 联想发布超级智能体矩阵,杨元庆:美国关税影响反映在产品定价上,未来不确定性很大
  • 秦洪看盘|受阻回落,蓄积新做多能量
  • 外交部介绍中国赞比亚共同举办人工智能能力建设主题活动情况
  • 同观·德国|默茨当总理后,能否带领德国在欧盟“说了算”?