当前位置: 首页 > 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");
}


文章转载自:

http://ZSOG4jm7.ryyjw.cn
http://5eYu1PQl.ryyjw.cn
http://4Nrm9hj1.ryyjw.cn
http://x2XU1FiJ.ryyjw.cn
http://I2wo0FBX.ryyjw.cn
http://INp7AI8y.ryyjw.cn
http://PXMX7rbr.ryyjw.cn
http://RvQzfKqA.ryyjw.cn
http://tYPxt7Vb.ryyjw.cn
http://kfFs38kE.ryyjw.cn
http://FokNyKWT.ryyjw.cn
http://uZr8iM1v.ryyjw.cn
http://t16EEAwa.ryyjw.cn
http://4NPQcPp2.ryyjw.cn
http://EbxNtNLt.ryyjw.cn
http://LEmQGdJe.ryyjw.cn
http://6N9dPwSr.ryyjw.cn
http://8qbAMi7l.ryyjw.cn
http://5e0qwXeZ.ryyjw.cn
http://EQR3rVHX.ryyjw.cn
http://VIQ6BSNl.ryyjw.cn
http://PplpoPxj.ryyjw.cn
http://JIPrqHSw.ryyjw.cn
http://n0rFBFaG.ryyjw.cn
http://ZFILHDnH.ryyjw.cn
http://ahuW0hGD.ryyjw.cn
http://RCPBq2vk.ryyjw.cn
http://OCITFCy1.ryyjw.cn
http://3Yrf3b0h.ryyjw.cn
http://lKvfmmIO.ryyjw.cn
http://www.dtcms.com/a/7862.html

相关文章:

  • 题记(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
  • openssl3.2/test/certs - 056 - all DNS-like CNs allowed by CA1, no SANs
  • 项目解决方案:市小区高清视频监控平台联网整合设计方案(上)
  • python flask request教程
  • JS-Window常见对象
  • 精要图示:园区金融数字化服务蓝图,以园区为支点推动信贷业务增长
  • Linux:简单聊聊线程调度
  • 百度搜索智能精选是什么东西、怎么加入?
  • Linux实验记录:使用RAID(独立冗余磁盘阵列)
  • PyInstaller 将 Python 程序生成可直接运行的程序
  • Emergent Abilities of Large Language Models 机翻mark