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. 【云原生】为什么要虚拟化,为什么要容器,为什么要Docker,为什么要K8S?

    前言 如标题中的问题所提到的虚拟化,容器,Docker和K8s那样,我们不妨这样问:这些技术到底适用于哪些场景,有没有别的技术可以替代?这些技术的优劣在哪里? 下面我将针对性地从以上几个问题的出发点, ...

  2. win10下MySQL安装教程(MySql-8.0.26超级详细)

    一.下载安装包: 官网链接:MySQL :: Developer Zone 依次点击步骤如下: 二.MySQL文件配置 解压安装包: 解压后的目录并没有的my.ini文件,没关系可以自行创建在安装根目 ...

  3. gym中的discrete类、box类和multidiscrete类简介和使用

    相关文章: Box() dict()可用于创建连续的空间:OpenAI Gym Discrete和Box spaces同时存在,代码该怎么写:gym中各种离散连续写法 解读gym中的action_sp ...

  4. Python自动化办公--Pandas玩转Excel【一】

    相关文章: Python自动化办公--Pandas玩转Excel数据分析[二] Python自动化办公--Pandas玩转Excel数据分析[三]_汀.的博客-CSDN博客 python处理Excel ...

  5. LyScriptTools 反汇编类API接口手册

    LyScriptTools模块实在LyScript模块反汇编基础上封装而成,其提供了更多的反汇编方法,可以更好的控制x64dbg完成自动化反汇编任务,API参考手册如下. 插件地址:https://g ...

  6. 俄大神 lopatkin Windows 精简优化系统 - 工具软件

    昨天有个网友邮件我,说是想找个Tiny7 Rev2的ISO操作系统文件,但是我找了下,以前的那些文件有些已经删除了,所以就在网上搜到了俄大神 lopatkin Windows 精简优化系统,特此放到网 ...

  7. Python Fire:自动生成命令行接口

    命令行程序是平时写一些小工具时最常用的方式. 为了让命令行程序更加灵活,我们常常会设置一些参数,根据参数让程序执行不同的功能.这样就不用频繁的修改代码来执行不同的功能. 随着命令行程序功能的丰富,也就 ...

  8. P4145 上帝造题的七分钟 2 / 花神游历各国 题解

    题目链接:上帝造题的七分钟2/花神游历各国 差不多的题:[Ynoi Easy Round 2023] TEST_69 注意到对某个点来说暴力单点即为反复的:\(x=\sqrt{x}\),最终为 \(1 ...

  9. (python)做题记录||2024.2.4||题目是codewars的【 All Balanced Parentheses】

    题目链接:https://www.codewars.com/kata/5426d7a2c2c7784365000783/python 我的解决方案: def balanced_parens(n): # ...

  10. 小知识:grep过滤以#号开头的注释行 和 空行

    xtts的配置文件,有很多注释不想直接去掉的情况下,想清楚的看到目前设置了哪些参数,可以用grep过滤查看: grep -vE '^#|^$' xtt.properties 效果如下: [oracle ...