【c++ -- 谓词】
目录:
- 谓词
- (一)一元谓词
- (二)二元谓词
谓词
c++中的谓词:返回值为bool类型的仿函数;
一元谓词:operator() 函数接收一个参数;
二元谓词:operator() 函数接收两个参数。
补充:函数对象
重载函数调用操作符的类,其对象常称为函数对象。
函数对象使用重载的小括号时,其行为类型函数,因此也叫仿函数。
本质:
函数对象是一个类,而非一个函数,我们下面的匿名对象就是一个函数对象。
(一)一元谓词
class Person
{public:bool operator()(int v) // 一元谓词{return v > 50;}};void CoutVector(vector<int>v)
{for (vector<int>::iterator it = v.begin(); it != v.end(); ++it){cout << *it << ' ';}cout << endl;
}void test01()
{vector<int>v;for (int i = 0; i < 6; ++i){v.push_back(rand() % 100);}// 查找大于50的数字vector<int>::iterator it = find_if(v.begin(), v.end(), Person());cout << " 大于50的数字->";if (it != v.end())cout << "找到了:" << *it << endl;elsecout << "找不到" << endl;CoutVector(v);}
运行实例:
(二)二元谓词
class Person
{public:bool operator()(int v) // 一元谓词{return v > 0;}bool operator()(int v1, int v2) // 二元谓词{return v1 >= v2;}
};// 打印函数
void CoutVector(vector<int>v)
{for (vector<int>::iterator it = v.begin(); it != v.end(); ++it){cout << *it << ' ';}cout << endl;
}void test02()
{vector<int>v;for (int i = 0; i < 6; ++i){v.push_back(rand() % 100);}CoutVector(v);cout << "升序排序" << endl;sort(v.begin(), v.end());CoutVector(v);cout << "降序排序" << endl; sort(v.begin(), v.end(), Person()); // Person() 是一个匿名函数对象,也就是仿函数CoutVector(v);
}
运行实例:
【c++ -- 谓词】相关推荐
- 一阶逻辑与二阶逻辑的区别一元谓词多元谓词
https://blog.csdn.net/lengye7/article/details/89709244 命题逻辑 零阶逻辑 表达句子与句子间的关系 一阶对个体的(量词)修饰 对于所有的个体 三段 ...
- 03-NSPredicate谓词
NSPredicate 谓词 在查询数据的过程中,给NSFetchRequest设置一个过滤条件,不需要讲所有的托管对象加载到内存中去.这样的话就会节省内存和加快查找速度. 一 运算符 1 比较运算符 ...
- T-SQL IN 谓词
T-SQL谓词之一 IN.检查指定(IN谓词前)的值,字段值或标量表达式是否包含在定义的一组元素(放在括弧内)中.这组元素可以有一或多个值,而不同值之间由逗点分开. 创建一个临时表,并插入一些值. C ...
- [20150710]11G谓词推入问题2.txt
[20150710]11G谓词推入问题2.txt --生产系统遇到一个sql语句的问题. --生产系统的sql语句比较复杂,做一个简化的例子来说明问题.来说明自己优化遇到的困惑. --昨天看来别人的回 ...
- 【大数据】SparkSql 连接查询中的谓词下推处理 (一)
本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/YPN85WBNcnhk8xKjTPTa2g 作者:李勇 目录: 1.SparkSql 2.连接查询和 ...
- C++模板学习之函数对象之谓词
函数对象是用对象来表示的函数: 可以执行operator()的对象都叫做函数对象. 谓词是那些返回bool,operator()操作的函数对象. 考虑如何对一个序列求和: 函数对象的优势在于可以将参数 ...
- 调用webapi 错误:使用 HTTP 谓词 POST 向虚拟目录发送了一个请求,而默认文档是不支持 GET 或 HEAD 以外的 HTTP 谓词的静态文件。的解决方案
调用webapi 错误:使用 HTTP 谓词 POST 向虚拟目录发送了一个请求,而默认文档是不支持 GET 或 HEAD 以外的 HTTP 谓词的静态文件.的解决方案 参考文章: (1)调用weba ...
- 优化拥有谓词or的子查询
于节点2上发现一个sql,其结构如下: select distinct t.attr, t.item from a t where attr = :1 and (pro = :2 or exist ...
- Oracle统计信息不准(谓词越界)造成的性能问题
什么是谓词越界?谓词越界其实就是SQL语句的查询条件超出了数据库统计信息所记录的范围.谓词越界会导致Oracle优化器错误的选择SQL语句的执行计划,导致性能问题. 这里举一个简单的例子说明谓词越界导 ...
- 【数理逻辑】谓词逻辑 ( 个体词 | 个体域 | 谓词 | 全称量词 | 存在量词 | 谓词公式 | 习题 )
文章目录 一. 谓词逻辑相关概念 1. 个体词 2. 谓词 3. 量词 ( 1 ) 全称量词 ( 2 ) 存在量词 二. 命题符号化 技巧 1. 两个基本公式 ( 重要 ) ( 1 ) 有性质 F 的 ...
最新文章
- window.open的用法---javascript学习笔记
- 杀掉某个进程的 Shell
- [HOW TO]-github/gitee私有项目用户名密码免输入
- Django + Uwsgi + Nginx 的生产环境部署项目知识点
- s3c44b0x开发板之BOOT ROM配置
- 快来mark! 结构体重载运算符大全(运算、比较、赋值、输入输出)
- iOS 开发者账号共用发布证书 (Distribution)问题
- 关于待机、休眠、睡眠的区别和优缺点
- 问题: 将N个元素使用push_back插入到vector中, 求push_back操作的复杂度。
- OpenCV学习(二十二) :反向投影:calcBackProject(),mixChannels()
- textarea选中行删除_Easy Data Transform如何在Excel中删除重复的行?
- erp系统是什么软件有哪些
- JAVA学习第八天--Scanner /String/StringBuilder
- Windows Phone 的字体和语言配置支持
- 教你快速攻破小区门禁系统
- PDF加密如何解除?教你2个PDF解密方法
- 关于重命名C盘User文件夹内用户名的心得
- MTK6577---camera驱动分析
- 装修细节注意问题 装修细节有哪些
- latex按照知网格式引用论文