C++ //谓词 //一元谓词 //概念:返回bool类型的仿函数称为 谓词 //如果 operator()接受一个参数,那么叫做一元谓词 //如果 operator()接受 2 个参数,那么叫做一元谓词
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 个参数,那么叫做一元谓词的更多相关文章
- object-c中的BOOL类型
object-c中的布尔类型比C语言中的bool类型早了10年,它具有YES和NO两种值.在object-c中的布尔类型BOOL实际上是一种带符号的字符类型(signed char),它使用的空间是1 ...
- str字符串、bool类型常用方法总结
字符串拼接 必须是字符串与字符串拼接 print('马化腾'+'马云') print('马化腾' * 10) 将打印10个马化腾 字符串翻转 [ : :-1] 字符串可以加和乘,不能减和乘 input ...
- .NET Core 3.0 JsonSerializer.Deserialize 返回dynamic类型对象
.NET Core 3.0 JsonSerializer.Deserialize to dynamic object 因为官方还不支持返回动态类型的对象,只能自己手写一个,临时测试了下没问题,还有些地 ...
- LINQ查询返回DataTable类型
个人感觉Linq实用灵活性很大,参考一篇大牛的文章LINQ查询返回DataTable类型 http://xuzhihong1987.blog.163.com/blog/static/267315872 ...
- Direct3D11学习:(二)基本绘图概念和基本类型
转载请注明出处:http://www.cnblogs.com/Ray1024 一.概述 在正式开始学习D3D11之前,我们必需首先学习必要的基础知识. 在这篇文章中,我们将介绍一下Direct3D ...
- .NET的堆和栈01,基本概念、值类型内存分配
当我们对.NET Framework的一些基本面了解之后,实际上,还是很有必要了解一些更底层的知识.比如.NET Framework是如何进行内存管理的,是如何垃圾回收的......这样,我们才能写出 ...
- ASP.NET Web Api返回对象类型为JSON还是XML
在Umbraco平台上开发过程中,我用WebApi返回JSON result给前端 前端使用React调用这个web api来获取JSON result 我写的web api方法是返回JSON 类型的 ...
- JavaScript随笔记(一)基础概念以及变量类型
一.JavaScript中的基础概念 1.defer属性 一般我们在引用外部js文件的时候往往是将引用文件的位置放在标签当中,比如那么在标签中引入多个js文件时,浏览器会按照引入顺序加载执行这些引入的 ...
- C#中判断bool 类型 代码的最短写法
看到一个关于写最短代码的, 是一个bool类型判断的: public bool IsNull(object val) { if (val == null) { return true; } e ...
- 修改某个UITextField的键盘的返回键类型以及监听键盘的高度变化,取到键盘动画退出弹出的时间,一起随着键盘顶出来或者压下去,
1.修改某个UITextField的键盘的返回键类型: [_bottomTextView setReturnKeyType:UIReturnKeyDone]; 1.1.textFied点击return ...
随机推荐
- JS ----- JS原型与原型链终极详解(一)
一. 普通对象与函数对象 JavaScript 中,万物皆对象!但对象也是有区别的.分为普通对象和函数对象,Object .Function 是 JS 自带的函数对象.下面举例说明 var o1 = ...
- 跟着文档学Fabric:获取通道配置
原文在这里. 1. 获取通道配置 peer channel fetch config config_block.pb -o $ORDERER_CONTAINER -c $CH_NAME --tls - ...
- 缩小ios的包体
不选全部兼容设备 在xcode中导出ipa时,不勾选导出全部兼容性设备,这样导出的ipa包含两种架构:armv7和64 打包压缩 unity提供三种压缩模式可以选择,默认选择的是:default不压缩 ...
- C++ Boost 异步网络编程基础
Boost库为C++提供了强大的支持,尤其在多线程和网络编程方面.其中,Boost.Asio库是一个基于前摄器设计模式的库,用于实现高并发和网络相关的开发.Boost.Asio核心类是io_servi ...
- C/C++ 反汇编:分析类的实现原理
反汇编即把目标二进制机器码转为汇编代码的过程,该技术常用于软件破解.外挂技术.病毒分析.逆向工程.软件汉化等领域,学习和理解反汇编对软件调试.系统漏洞挖掘.内核原理及理解高级语言代码都有相当大的帮助, ...
- Mygin中间件优化及logger日志中间件
本篇是mygin的第七篇,参照gin框架,感兴趣的可以从 Mygin第一篇 开始看,Mygin从零开始完全手写,在实现的同时,带你一窥gin框架的核心原理实现. 目的 中间件Middleware优化 ...
- AutoGPT是什么?超简单安装使用教程
1.AutoGPT 最近几天当红炸子鸡的是AutoGPT,不得不说AI发展真快啊,几天出来一个新东西,都跟不上时代的脚步了. AutoGPT是一个开源的应用程序,展示了GPT-4语言模型的能力.这个程 ...
- 借助Rich库实现Pandas DataFrame颜值升级
pandas的DataFrame功能强大自不必说,它可以帮助我们极大的提高统计分析的效率. 不过,使用DataFrame开发我们的分析程序的时候,经常需要打印出DataFrame的内容,以验证和调试数 ...
- Google三驾马车之二:MapReduce
第一次接触mr还是在入门mit6.824的lab1,最近重新读了一遍原始论文,又有了一些新的想法,简单做一些记录. 作为Google分布式系统的重要组成,本篇文章核心在于map/reduce操作带来的 ...
- UVA1108 Mining Your Own Business 题解
题目传送门 题意 在一个无向图上选择尽量少的点涂黑,使得删除任意一个点后,每个连通分量里都至少有一个黑点(多组数据). 正文 观察题意,发现这是个 Tarjan 求点双连通分量的板子. 考虑在求点双连 ...