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. ACME笔记(思维导图)

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯

  2. 【OpenIM原创】简单轻松入门 一文讲解WebRTC实现1对1音视频通信原理

    什么是 WebRTC ? WebRTC(Web Real-Time Communication)是 Google于2010以6829万美元从 Global IP Solutions 公司购买,并于20 ...

  3. vim 从嫌弃到依赖(22)——自动补全

    这篇文章我们将讨论 vim 自带的自动补全功能.当然,针对自动补全功能有许多好用的插件,但是了解vim自带的功能有助于我们更好的用来插件的补全功能.因为我见过有的配置文件将插件的功能配置的比原有的更难 ...

  4. el-tree只展示前三个节点数据

    后端也返回了第四等级,但是不想让他展示,可以这样解决只展示前三等级 // 获取room树 getRoomTreeList() { getRoomTree().then((res) => { // ...

  5. 【三】tensorboard安装、使用教学以及遇到的问题

    相关文章: [一]tensorflow安装.常用python镜像源.tensorflow 深度学习强化学习教学 [二]tensorflow调试报错.tensorflow 深度学习强化学习教学 [三]t ...

  6. LyScript 实现应用层钩子扫描器

    Capstone 是一个轻量级的多平台.多架构的反汇编框架,该模块支持目前所有通用操作系统,反汇编架构几乎全部支持,本篇文章将运用LyScript插件结合Capstone反汇编引擎实现一个钩子扫描器. ...

  7. Linux的进程管理 [补档-2023-07-25]

    Linux进程管理 9-1并发与并行: ​ 并发:在同一个cpu上,并且在一个时间段时,同时运行多个程序.比如在1000毫秒内,我们有5个程 序需要执行,所以我们可以将1000毫秒分为5个200毫秒, ...

  8. 三星发布990 EVO SSD:同时支持PCIe 4.0和PCIe 5.0

    1月8日消息,三星发布了新款产品--990 EVO SSD,这是首款同时支持了PCIe 4.0 x4及PCIe 5.0 x2通道的SSD. 据了解,990 EVO面向中端市场,为2280 M.2规格, ...

  9. Vulkan学习苦旅05:马不停蹄地渲染(创建交换链VkSwapchainKHR)

    通俗地说,渲染图像就是为图像的每个像素选择合适的颜色.例如,如果图像的分辨率为1920x1080,表示图像中有1920x1080个像素,渲染的过程,就是为每个位置的像素计算出合适的颜色.具体来说,假设 ...

  10. MySQL数据库详解(上)

    MySQL(一) 1.登陆 mysql -uroot -pMyPassword 使用默认的root用户名登陆,将MyPassword改成自己的密码 2.基本操作 --注释 updata mysql . ...