目录:

  • 谓词
    • (一)一元谓词
    • (二)二元谓词

谓词

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++ -- 谓词】相关推荐

  1. 一阶逻辑与二阶逻辑的区别一元谓词多元谓词

    https://blog.csdn.net/lengye7/article/details/89709244 命题逻辑 零阶逻辑 表达句子与句子间的关系 一阶对个体的(量词)修饰 对于所有的个体 三段 ...

  2. 03-NSPredicate谓词

    NSPredicate 谓词 在查询数据的过程中,给NSFetchRequest设置一个过滤条件,不需要讲所有的托管对象加载到内存中去.这样的话就会节省内存和加快查找速度. 一 运算符 1 比较运算符 ...

  3. T-SQL IN 谓词

    T-SQL谓词之一 IN.检查指定(IN谓词前)的值,字段值或标量表达式是否包含在定义的一组元素(放在括弧内)中.这组元素可以有一或多个值,而不同值之间由逗点分开. 创建一个临时表,并插入一些值. C ...

  4. [20150710]11G谓词推入问题2.txt

    [20150710]11G谓词推入问题2.txt --生产系统遇到一个sql语句的问题. --生产系统的sql语句比较复杂,做一个简化的例子来说明问题.来说明自己优化遇到的困惑. --昨天看来别人的回 ...

  5. 【大数据】SparkSql 连接查询中的谓词下推处理 (一)

    本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/YPN85WBNcnhk8xKjTPTa2g 作者:李勇 目录: 1.SparkSql 2.连接查询和 ...

  6. C++模板学习之函数对象之谓词

    函数对象是用对象来表示的函数: 可以执行operator()的对象都叫做函数对象. 谓词是那些返回bool,operator()操作的函数对象. 考虑如何对一个序列求和: 函数对象的优势在于可以将参数 ...

  7. 调用webapi 错误:使用 HTTP 谓词 POST 向虚拟目录发送了一个请求,而默认文档是不支持 GET 或 HEAD 以外的 HTTP 谓词的静态文件。的解决方案

    调用webapi 错误:使用 HTTP 谓词 POST 向虚拟目录发送了一个请求,而默认文档是不支持 GET 或 HEAD 以外的 HTTP 谓词的静态文件.的解决方案 参考文章: (1)调用weba ...

  8. 优化拥有谓词or的子查询

    于节点2上发现一个sql,其结构如下: select distinct t.attr, t.item from a t where attr = :1   and (pro = :2 or exist ...

  9. Oracle统计信息不准(谓词越界)造成的性能问题

    什么是谓词越界?谓词越界其实就是SQL语句的查询条件超出了数据库统计信息所记录的范围.谓词越界会导致Oracle优化器错误的选择SQL语句的执行计划,导致性能问题. 这里举一个简单的例子说明谓词越界导 ...

  10. 【数理逻辑】谓词逻辑 ( 个体词 | 个体域 | 谓词 | 全称量词 | 存在量词 | 谓词公式 | 习题 )

    文章目录 一. 谓词逻辑相关概念 1. 个体词 2. 谓词 3. 量词 ( 1 ) 全称量词 ( 2 ) 存在量词 二. 命题符号化 技巧 1. 两个基本公式 ( 重要 ) ( 1 ) 有性质 F 的 ...

最新文章

  1. window.open的用法---javascript学习笔记
  2. 杀掉某个进程的 Shell
  3. [HOW TO]-github/gitee私有项目用户名密码免输入
  4. Django + Uwsgi + Nginx 的生产环境部署项目知识点
  5. s3c44b0x开发板之BOOT ROM配置
  6. 快来mark! 结构体重载运算符大全(运算、比较、赋值、输入输出)
  7. iOS 开发者账号共用发布证书 (Distribution)问题
  8. 关于待机、休眠、睡眠的区别和优缺点
  9. 问题: 将N个元素使用push_back插入到vector中, 求push_back操作的复杂度。
  10. OpenCV学习(二十二) :反向投影:calcBackProject(),mixChannels()
  11. textarea选中行删除_Easy Data Transform如何在Excel中删除重复的行?
  12. erp系统是什么软件有哪些
  13. JAVA学习第八天--Scanner /String/StringBuilder
  14. Windows Phone 的字体和语言配置支持
  15. 教你快速攻破小区门禁系统
  16. PDF加密如何解除?教你2个PDF解密方法
  17. 关于重命名C盘User文件夹内用户名的心得
  18. MTK6577---camera驱动分析
  19. 装修细节注意问题 装修细节有哪些
  20. latex按照知网格式引用论文

热门文章

  1. 如何使用swing创建一个BeatBox
  2. Kali Linux 2016.1 x86 x64 安装 wine QQ
  3. 发生交通事故当时没报警过后可否报警呢
  4. Flink入门(一)(Java和scala)
  5. linux下gcc版本切换
  6. UR3e 真实机械臂与Ros调试记录
  7. 睿智的法杖v8.28ti
  8. SQL语句--CASE函数写法的简单举例,及应用
  9. 事件参数$event
  10. 取Json中的数组进行遍历