STL - 判断式(Predicate) - 单参判断式(Unary Predicate)

简介: Predicate是一种特殊的辅助函数,它会返回Boolean,常常被用来作为排序或者查找准则。 Predicate会有1个或者2个操作数。   Unary Predicate(单参判断式) 例子: 我们先写一个算法,如下: MathUtil.

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 == 0 || number == 1) {
        return false;
    }

    // find divisor that divides without a remainder
    int divisor;
    for (divisor = number / 2; number%divisor != 0; --divisor) {
        ;
    }

    // if no divisor greater than 1 is found, it is a prime number
    return divisor == 1;
}


测试代码

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 ----------------

 

目录
相关文章
解决element-ui上传多张图片时闪动问题
解决element-ui上传多张图片时闪动问题
707 0
|
定位技术
echarts地图开发map3D:材质
echarts地图开发map3D:材质
347 0
|
人工智能 并行计算 算法
Pandas、Numpy性能优化秘籍(全)
pandas、numpy是Python数据科学中非常常用的库,numpy是Python的数值计算扩展,专门用来处理矩阵,它的运算效率比列表更高效。pandas是基于numpy的数据处理工具,能更方便的操作大型表格类型的数据集。但是,随着数据量的剧增,有时numpy和pandas的速度就成瓶颈。
|
11月前
|
传感器 算法
基于GA遗传优化的WSN网络最优节点部署算法matlab仿真
本项目基于遗传算法(GA)优化无线传感器网络(WSN)的节点部署,旨在通过最少的节点数量实现最大覆盖。使用MATLAB2022A进行仿真,展示了不同初始节点数量(15、25、40)下的优化结果。核心程序实现了最佳解获取、节点部署绘制及适应度变化曲线展示。遗传算法通过初始化、选择、交叉和变异步骤,逐步优化节点位置配置,最终达到最优覆盖率。
|
数据采集 前端开发 JavaScript
动态与静态网站抓取的区别:从抓取策略到性能优化
本文详细介绍了动态与静态网站抓取的区别、抓取策略及性能优化技巧,并提供了相关代码示例。静态网站抓取通过简单的HTTP请求和解析库实现,而动态网站则需使用Selenium等工具模拟浏览器执行JavaScript。文章还展示了如何使用代理IP、多线程和合理的请求头设置来提高抓取效率。
507 2
动态与静态网站抓取的区别:从抓取策略到性能优化
|
9月前
|
监控 文件存储 异构计算
国产NAS也支持本地部署DeepSeek了:极空间Z423上手
极空间Z423 NAS新增本地部署DeepSeek大模型功能,支持7B和14B两种参数量级模型。本文通过实际测试展示了其性能表现:14B模型运行缓慢,Token输出速度低于每秒10个,而7B模型速度稍快但仍不理想。硬件资源占用高,温度显著上升,风扇噪音增大。作者建议优化交互逻辑、提供局域网接口及更好GPU支持,并预测未来NAS可能加入GPU或NPU以提升推理能力。此功能目前更像战略布局,为后续硬件升级铺垫。
601 0
|
监控 项目管理
软件工程IT项目管理复习之 十一:项目风险管理
软件工程IT项目管理复习之 十一:项目风险管理
862 0
|
传感器 算法
基于MPPT的风力机发电系统simulink建模与仿真
本课题基于最大功率点跟踪(MPPT)技术,对风力机发电系统进行Simulink建模与仿真。通过S函数实现MPPT算法,实时监测和调整风力发电机的工作状态,使其始终工作在最佳效率点,从而最大限度地利用风能,提高风力发电效率。系统包括风速传感器、发电机状态监测模块、MPPT控制器、发电机驱动系统及反馈回路,确保闭环控制的稳定性和准确性。
|
监控 Linux 网络安全
linux中启动rpc.rstat监控
请注意,rpc.rstatd服务通常用于收集远程系统的性能统计信息,例如CPU利用率、内存使用等。在使用rpc.rstatd服务之前,你应该确保了解其功能、用法和安全性,并根据需要进行适当的配置和调整。
309 0
|
存储 自然语言处理 算法
Tokenization 指南:字节对编码,WordPiece等方法Python代码详解
在2022年11月OpenAI的ChatGPT发布之后,大型语言模型(llm)变得非常受欢迎。从那时起,这些语言模型的使用得到了爆炸式的发展,这在一定程度上得益于HuggingFace的Transformer库和PyTorch等库。
400 3