Predicate是一种特殊的辅助函数,它会返回Boolean,常常被用来作为排序或者查找准则。

Predicate会有1个或者2个操作数。

Unary Predicate(单参判断式)

例子:

我们先写一个算法,如下:

MathUtil.h

#ifndef _Math_Util_H_
#define _Math_Util_H_ using namespace std; class MathUtil
{
public:
static bool isPrime(int number);
}; #endif

MathUtil.cpp

#include <string>
#include "MathUtil.h" bool MathUtil::isPrime(int number)
{
// ignore negative sign
number = abs(number); // 0 and 1 are no prime numbers
if (number == || number == ) {
return false;
} // find divisor that divides without a remainder
int divisor;
for (divisor = number / ; number%divisor != ; --divisor) {
;
} // if no divisor greater than 1 is found, it is a prime number
return divisor == ;
}

测试代码

PredicateTest.cpp

#include <list>
#include <algorithm>
#include <iostream>
#include "../../Algorithm/MathUtil.h"
#include "PredicateTest.h" using namespace std; void PredicateTest::unaryPredicate()
{
list<int> coll;
int startNumber, endNumber; cout << "Input Start Number: " << endl;
cin >> startNumber;
cout << "Input End Number: " << endl;
cin >> endNumber; // insert elements from start number to end number
for (int i = startNumber; i <= endNumber; ++i) {
coll.push_back(i);
} // search for prime number
auto pos = find_if(coll.cbegin(), coll.cend(), // range
MathUtil::isPrime); // predicate
if (pos != coll.end()) {
// found
cout << *pos << " is first prime number found" << endl;
}
else {
// not found
cout << "no prime number found" << endl;
}
} void PredicateTest::run()
{
printStart("unaryPredicate()");
unaryPredicate();
printEnd("unaryPredicate()");
}

运行结果:

---------------- unaryPredicate(): Run Start ----------------
Input Start Number:
30
Input End Number:
50
31 is first prime number found
---------------- unaryPredicate(): Run End ----------------

STL - 判断式(Predicate) - 单参判断式(Unary Predicate)的更多相关文章

  1. ng2响应式表单-翻译与概括官网REACTIVE FORMS页面

    本文将半翻译半总结的讲讲ng2官网的另一个未翻译高级教程页面. 原文地址. 文章目的是使用ng2提供的响应式表单技术快速搭出功能完善丰富的界面表单组件. 响应式表单是一项响应式风格的ng2技术,本文将 ...

  2. Angular2响应式表单

    本文将半翻译半总结的讲讲ng2官网的另一个未翻译高级教程页面. 原文地址. 文章目的是使用ng2提供的响应式表单技术快速搭出功能完善丰富的界面表单组件. 响应式表单是一项响应式风格的ng2技术,本文将 ...

  3. Angular2响应式表单-翻译与概括官网REACTIVE FORMS页面

    本文将半翻译半总结的讲讲ng2官网的另一个未翻译高级教程页面. 原文地址. 文章目的是使用ng2提供的响应式表单技术快速搭出功能完善丰富的界面表单组件. 响应式表单是一项响应式风格的ng2技术,本文将 ...

  4. 关于C#判断是否是数字的正则式

    有话要说 今天我同事突然让我帮他看个问题,他说想不通为什么数据库中会有不合法的内容,我都已经用正则过滤了,并且在本地调通了的! 我问他是不是你正则有问题,他说没问题啊,前端和后端的正则是一样的,前端我 ...

  5. shell编程 条件判断式----利用 case ..... esac 判断

    条件判断式----利用 case ..... esac 判断 case  $变量名称 in   <==关键词为 case ,还有变量前有钱字号 "第一个变量内容")   &l ...

  6. Angular11 模板表单、响应式表单(自定义验证器)、HTTP、表单元素双向绑定

    1 模板表单 模型通过指令隐式创建 技巧01:需要在模块级别引入 FormsModule ,通常在共享模块中引入再导出,然后在需要用到 FormsModule 的模块中导入共享模块就可以啦 impor ...

  7. Fixed Responsive Nav – 响应式的单页网站导航插件

    Fixed Responsive Nav 是一个响应式的,固定的,触摸友好的单页网站导航插件,响应式导航,流畅的动画滚动.该项目采用渐进增强构建,支持工作在 IE6 及以上版本的浏览器. 你可以给导航 ...

  8. 判断语句之单if

    什么是判断语句? 给定一个判断条件,并在程序执行过程中判断该条件是否成立,根据判断结果执行不同的操作,从而改变代码的执行顺序,实现更多的功能,这就是判断语句. 判断语句if if语句第一种格式:if  ...

  9. Angular4.x 创建组件|绑定数据|绑定属性|数据循环|条件判断|事件|表单处理|双向数据绑定

    Angular4.x 创建组件|绑定数据|绑定属性|数据循环|条件判断|事件|表单处理|双向数据绑定 创建 angular 组件 https://github.com/angular/angular- ...

随机推荐

  1. 阿里云下Linux服务器安装Redis

    什么是Redis? Redis是一个可以持久化的缓存框架,支持分布式缓存,简单易用.类似的框架还有memcached,是一个Key-Value形式存储的缓存框架.   可以作为缓存的框架有: EHCa ...

  2. Ubuntu下查看软件版本及安装位置

    查看软件版本: XXX --version 或 aptitude show xxx 也可用apt-show-versions (要先安装sudo apt-get install apt-show-ve ...

  3. king's trouble II SCU - 4488

    Time Limit: 1000 MS Memory Limit: 131072 K Description Long time ago, a king occupied a vast territo ...

  4. p1315构建双塔 dp

    From easthong ☆构建双塔                 描述 Description     2001年9月11日,一场突发的灾难将纽约世界贸易中心大厦夷为平地,Mr. F曾亲眼目睹了 ...

  5. MySQL之thread cache

    最近突然对MySQL的连接非常感兴趣,从status根据thread关键字可以查出如下是个状态 show global status like 'thread%'; +---------------- ...

  6. IOS开发自定义CheckBox控件

    IOS本身没有系统的CheckBox组件,但是实际开发中会经常用到,所以专门写了一个CheckBox控件,直接上代码 效果图: UICheckBoxButton.h文件如下: #import #imp ...

  7. VS2010 + IDA SDK 搭建IDA Plugin开发环境

    http://www.h4ck.org.cn/2011/11/vs2010-idasdk6-2-ida-plugin-development/ 1. 执行菜单的File->New->Pro ...

  8. NHibernate Configuring

    NHibernate引用程序中有几个关键组件,如下图所示: 初始化时,NHibernate应用程序将生成一个配置对象.本节中,我们通过设置App.config文件来生成该配置对象.该对象负责加载映射信 ...

  9. linux下启动tomcat出现“This file is needed to run this program ”

    使用sh startup.sh启动tomcat 出现This file is needed to run this program 原因.sh文件都不是可执行文件,于是找到命令: chmod +x * ...

  10. Codeforces Round #261 (Div. 2)[ABCDE]

    Codeforces Round #261 (Div. 2)[ABCDE] ACM 题目地址:Codeforces Round #261 (Div. 2) A - Pashmak and Garden ...