在coding学习时,我们都知道,C++的标准算法库<algorithm>中含有一个我们常用的排序算法sort()。其函数模板是:

template <class _RanIt, class _Pr>
_CONSTEXPR20 void sort(const _RanIt _First, const _RanIt _Last, _Pr _Pred) { // order [_First, _Last)_Adl_verify_range(_First, _Last);const auto _UFirst = _Get_unwrapped(_First);const auto _ULast  = _Get_unwrapped(_Last);_Sort_unchecked(_UFirst, _ULast, _ULast - _UFirst, _Pass_fn(_Pred));
}

其中,

_RanIt _First:表示 要传入的所传序列开头位置

_RanIt _Last:表示 要传入的所传序列结束位置

_Pr _Pred:表示 要传入做何种高级排序(或说自定义排序,即升or降序)谓词(Predicate)

        谓词(分为一元谓词-含有1个形参二元谓词-含有2个形参)其实就是一个返回值类型为bool类型的仿函数,仿函数其实本质上就是一个重载了函数调用的运算符operator()函数的一个类类型。(如果对于这些都不清楚的话是否应该回去补补C++的基本语法?这里我只给出定义,就不多赘述了)

最近coding时,我发现一个有意思的点。废话不多说,直接上代码:

bool static myGreater(int v1, int v2) {return v1 > v2;
}
class myGreater2 {
public:bool operator()(int v1,int v2){return v1 > v2;}
};
void mprint(int v) {cout << v << "\t";
}
int main(void) {vector<int> res{1,2,3,4,5,6,7,8,};sort(res.begin(), res.end(), myGreater);for_each(res.begin(), res.end(), mprint);cout << "\n----------------------------------------------------------" << endl;sort(res.begin(), res.end(), myGreater2());for_each(res.begin(), res.end(), mprint);cout<<endl;system("pause");return 0;
}

运行结果:

我们会发现,谓词myGreater2()以及bool static myGreater(int v1, int v2)函数的作用是一毛一样的!都是按照我定义的降序来进行排序了!

那么在日后coding中我们大可以将全局静态函数当作谓词来使用,毕竟编译器没报错对吧?

关于C++中的谓词Pred()以及bool static XXX()的用法总结相关推荐

  1. Java中的类变量(静态变量static的具体用法快速入门))

    文章目录 问题分析 修改过后的代码 运行结果 先看一段代码 package study_static;public class Childgame {public static void main(S ...

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

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

  3. join和子查询效率_SparkSQL连接查询中的谓词下推处理(上)

    SparkSQL是架构在 Spark 计算框架之上的分布式 Sql 引擎,使用 DataFrame 和 DataSet 承载结构化和半结构化数据来实现数据复杂查询处理,提供的 DSL可以直接使用 sc ...

  4. java.util接口_Java 8中java.util.function包中的谓词和使用者接口

    java.util接口 在上一篇文章中,我写了关于Function接口的内容 ,它是java.util.package的一部分. 我还提到了Predicate接口,它是同一包的一部分,在这篇文章中,我 ...

  5. Java 8中java.util.function包中的谓词和使用者接口

    在我以前的文章中,我写了关于Function接口的内容 ,它是java.util.package的一部分. 我还提到了Predicate接口,它是同一包的一部分,在这篇文章中,我将向您展示如何使用Pr ...

  6. sequelize 左连接 left join_SparkSQL连接查询中的谓词下推处理(下)

    本篇主要介绍的是--外连接查询中的谓词下推规则,这相比内连接中的规则要复杂一些,不过使用简单的表格来进行分析也是可以分析清楚的. 目录: 1.左表 join 后条件下推 2.左表join中条件不下推 ...

  7. C++中定义一个函数为bool类型的作用

    1.bool型函数 bool型函数(即返回值为bool类型的函数)的作用--获取函数返回值 bool getvalue(bool b){if(b == true)return true;elseret ...

  8. TF:tensorflow框架中常用函数介绍—tf.Variable()和tf.get_variable()用法及其区别

    TF:tensorflow框架中常用函数介绍-tf.Variable()和tf.get_variable()用法及其区别 目录 tensorflow框架 tensorflow.Variable()函数 ...

  9. ios开发读取剪切板的内容_iOS中管理剪切板的UIPasteboard粘贴板类用法详解

    一.自带剪切板操作的原生UI控件在iOS的UI系统中,有3个控件自带剪切板操作,分别是UITextField.UITextView与UIWebView.在这些控件的文字交互处进行长按手势可以在屏幕视图 ...

最新文章

  1. 华为路由器ospf路由表解读_华为动态路由OSPF实例详解之多区域配置-华为路由器设置...
  2. 3min利用Python实现9种经典排序算法可视化!(附源代码)
  3. ajax——实现三级联动下拉列表
  4. web服务器的性能体现,Web应用服务器的性能问题分析
  5. Eclipse设置字体大小等!
  6. linkedin爬虫_机器学习的学生和从业者的常见问题在LinkedIn上提问
  7. Linux下如何抓取串口码流,linux alsa音频中采样率fs、比特率BCLK 、主时钟MCLK关系...
  8. 2.oracle物理结构,oracle实验2oracle物理结构管理
  9. cocos 制作动态生成内容的列表_零代码工具,让你在线轻松制作交互内容!
  10. POJ 3107 - Godfather
  11. 寻找不设防的无线局域网——战争驾驶全接触
  12. woff字体找不到导致的404错误
  13. vb.net使用hook技术之键盘鼠标钩子
  14. 苹果x屏幕多少钱_xsmax闪屏,苹果xsmax换屏幕多少钱
  15. 金沙滩开发板单片机学习笔记(2)
  16. python 汉字编码
  17. csdn博客改用户名,取名字慎重
  18. 优质的APP推广渠道那么多,怎么选才好?
  19. word 表格内容不能自动延续到下一页
  20. RN 与 Android 代码交互

热门文章

  1. Android全品类源码大全
  2. 求根公式在python里怎么表达_python求根公式
  3. flarum论坛如何html,Flarum从入门安装到基本设置
  4. 卫星热分析实例仿真001:篮球太空中的温度
  5. 2024北京邮电大学计算机考研信息汇总
  6. 数字推盘游戏java_数字推盘游戏下载_数字推盘最强大脑app游戏下载最新版 v1.0-安族游戏网...
  7. 最新《C++游戏服务器开发教程》
  8. 13个人中找出叛徒的问题(耶稣问题)经典做法
  9. PowerDesigner经验,sql文件生成pdm文件,并生成中文comment描述
  10. python 中惰性实现