1 //谓词
2 //一元谓词
3 //概念:返回bool类型的仿函数称为 谓词
4 //如果 operator()接受一个参数,那么叫做一元谓词
5 //如果 operator()接受 2 个参数,那么叫做一元谓词
6
7 #include<iostream>
8 #include<string>
9 #include<vector>
10 #include<algorithm>
11 #include<list>
12 #include<map>
13 #include<set>
14 #include<deque>
15
16 using namespace std;
17 //一元谓词
18 class GreaterFive
19 {
20 public:
21 bool operator()(int val)
22 {
23 return val > 5;
24 }
25 };
26
27 void test01()
28 {
29 vector<int>v;
30 for (int i = 0; i < 10; i++)
31 {
32 v.push_back(i);
33 }
34 //查找容器中有没有大于 5 的数字
35 // GreaterFive() 匿名的函数对象
36 vector<int>::iterator it= find_if(v.begin(), v.end(), GreaterFive());
37 if (it == v.end())
38 {
39 cout << "未找到!" << endl;
40 }
41 else
42 {
43 cout << "找到了大于5的数字为:" << *it << endl;
44 }
45
46
47
48 }
49 class MyCompare
50 {
51 public:
52 bool operator()(int val, int va2)
53 {
54 return val > va2;
55 }
56 };
57
58
59 //二元谓词
60 void test02()
61 {
62 vector<int>v;
63 v.push_back(10);
64 v.push_back(20);
65 v.push_back(90);
66 v.push_back(80);
67 v.push_back(50);
68
69 sort(v.begin(), v.end());
70 for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
71 {
72 cout << *it << " ";
73 }
74 cout << endl;
75 //使用函数对象 改变算法策略 改变排序规则
76 sort(v.begin(), v.end(),MyCompare());
77
78 cout << "------------------------" << endl;
79 for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
80 {
81 cout << *it << " ";
82 }
83 cout << endl;
84
85 //list<int>l;
86 //l.push_back(10);
87 //l.sort();
88
89 //set<int>s;
90 //s.insert(20);
91 //
92
93 //map<int, int>m;
94 //m.insert(make_pair(1, 20));
95 //m.insert(pair<int, int>(10, 20));
96 //m[3] = 50;
97 //
98 //deque<int>d;
99 //d.push_back(20);
100 //d.push_front(20);
101 //sort(d.begin(), d.end());
102 }
103
104 int main()
105 {
106 test01();
107 test02();
108 }

C++ //谓词 //一元谓词 //概念:返回bool类型的仿函数称为 谓词 //如果 operator()接受一个参数,那么叫做一元谓词 //如果 operator()接受 2 个参数,那么叫做一元谓词的更多相关文章

  1. object-c中的BOOL类型

    object-c中的布尔类型比C语言中的bool类型早了10年,它具有YES和NO两种值.在object-c中的布尔类型BOOL实际上是一种带符号的字符类型(signed char),它使用的空间是1 ...

  2. str字符串、bool类型常用方法总结

    字符串拼接 必须是字符串与字符串拼接 print('马化腾'+'马云') print('马化腾' * 10) 将打印10个马化腾 字符串翻转 [ : :-1] 字符串可以加和乘,不能减和乘 input ...

  3. .NET Core 3.0 JsonSerializer.Deserialize 返回dynamic类型对象

    .NET Core 3.0 JsonSerializer.Deserialize to dynamic object 因为官方还不支持返回动态类型的对象,只能自己手写一个,临时测试了下没问题,还有些地 ...

  4. LINQ查询返回DataTable类型

    个人感觉Linq实用灵活性很大,参考一篇大牛的文章LINQ查询返回DataTable类型 http://xuzhihong1987.blog.163.com/blog/static/267315872 ...

  5. Direct3D11学习:(二)基本绘图概念和基本类型

    转载请注明出处:http://www.cnblogs.com/Ray1024   一.概述 在正式开始学习D3D11之前,我们必需首先学习必要的基础知识. 在这篇文章中,我们将介绍一下Direct3D ...

  6. .NET的堆和栈01,基本概念、值类型内存分配

    当我们对.NET Framework的一些基本面了解之后,实际上,还是很有必要了解一些更底层的知识.比如.NET Framework是如何进行内存管理的,是如何垃圾回收的......这样,我们才能写出 ...

  7. ASP.NET Web Api返回对象类型为JSON还是XML

    在Umbraco平台上开发过程中,我用WebApi返回JSON result给前端 前端使用React调用这个web api来获取JSON result 我写的web api方法是返回JSON 类型的 ...

  8. JavaScript随笔记(一)基础概念以及变量类型

    一.JavaScript中的基础概念 1.defer属性 一般我们在引用外部js文件的时候往往是将引用文件的位置放在标签当中,比如那么在标签中引入多个js文件时,浏览器会按照引入顺序加载执行这些引入的 ...

  9. C#中判断bool 类型 代码的最短写法

    看到一个关于写最短代码的,  是一个bool类型判断的:    public bool IsNull(object val) { if (val == null) { return true; } e ...

  10. 修改某个UITextField的键盘的返回键类型以及监听键盘的高度变化,取到键盘动画退出弹出的时间,一起随着键盘顶出来或者压下去,

    1.修改某个UITextField的键盘的返回键类型: [_bottomTextView setReturnKeyType:UIReturnKeyDone]; 1.1.textFied点击return ...

随机推荐

  1. 【小测试】VictoriaMetrics中如何汇总单个time series上的多个data point?

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 问题最终在andy专家的帮助下解决,但是内部的原理还是很迷 ...

  2. GIT专业术语教程-转载

    目录 一.版本控制概要 1.1.什么是版本控制 1.2.常用术语 1.3.常见的版本控制器 1.4.版本控制分类 1.4.1.本地版本控制 1.4.2.集中版本控制 1.4.3.分布式版本控制 1.5 ...

  3. TienChin 活动管理-添加活动页面

    后端 ActivityController.java @Resource private IChannelService iChannelService; /** * 获取渠道列表 * * @retu ...

  4. C# 静态与动态数组

    在C#中,有许多内置的方法可以处理字符和字符串.这些方法是非常有用的,可以帮助开发人员更方便.更高效地处理文本数据.无论是静态数组还是动态数组,都可以使用System.Array类中的各种方法对数组进 ...

  5. C/C++ Qt QThread 线程组件应用

    QThread库是QT中提供的跨平台多线程实现方案,使用时需要继承QThread这个基类,并重写实现内部的Run方法,由于该库是基本库,默认依赖于QtCore.dll这个基础模块,在使用时无需引入其他 ...

  6. Dart常用核心知识

    Dart简述 Dart 是一个为全平台构建快速应用的客户端优化的编程语言,免费且开源. Dart是面向对象的.类定义的.单继承的语言.它的语法涵盖了多种语言的语法特性,如C,JavaScirpt, J ...

  7. 一文详解应用安全防护ESAPI

    本文分享自华为云社区<应用安全防护ESAPI>,作者: Uncle_Tom. 1. ESAPI 简介 OWASP Enterprise Security API (ESAPI)是一个免费. ...

  8. linux-Shell将命令行终端输出结果写入保存到文件中

    (一)将输出与错误写到同一个文件(1)方法1 #!bin/bashjava -jar hbase-example.jar 2>&1 | tee hbase_log.txt 说明:0,1, ...

  9. MySQL8 查询优化新工具 Explain Analyze

    1.什么是Explain Analyze? Explain 是我们常用的查询分析工具,可以对查询语句的执行方式进行评估(并非实际的执行情况,可能与实际情况存在较大差距),给出很多有用的线索. Expl ...

  10. Socket.D 开源输传协议的集群转发特性

    1.简介 Socket.D 是基于"事件"和"语义消息""流"的网络应用层协议.底层可以依赖 TCP.UDP.KCP.WebSocket 等 ...