前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >c++函数对象之谓词

c++函数对象之谓词

作者头像
西西嘛呦
发布2020-08-27 00:01:23
4660
发布2020-08-27 00:01:23
举报
文章被收录于专栏:数据分析与挖掘

概念:

返回bool类型的仿函数被称为谓词;

如果operator()接受一个参数,那么就叫一元谓词;

如果operator()接受两个参数,那么就叫二元谓词;

一、一元谓词

代码语言:javascript
复制
#include<iostream>
using namespace std;
#include <vector>
#include <algorithm>

//仿函数 返回值类型是bool数据类型,称为谓词
//一元谓词

class GreaterFive
{
public:
    bool operator()(int val)
    {
        return val > 5;
    }
};

void test01()
{
    vector<int>v;
    for (int i = 0; i < 10; i++)
    {
        v.push_back(i);
    }

    //查找容器中 有没有大于5的数字
    //GreaterFive() 匿名函数对象
    vector<int>::iterator it =  find_if(v.begin(), v.end(), GreaterFive());
    if (it == v.end())
    {
        cout << "未找到" << endl;
    }
    else
    {
        cout << "找到了大于5的数字为: " << *it << endl;
    }

}


int main() {

    test01();

    system("pause");

    return 0;
}

二、二元谓词

代码语言:javascript
复制
#include<iostream>
using namespace std;
#include <vector>
#include <algorithm>

//二元谓词
class MyCompare
{
public:
    bool operator()(int va11,int val2)
    {
        return va11 > val2;
    }

};

void test01()
{
    vector<int>v;
    v.push_back(10);
    v.push_back(40);
    v.push_back(20);
    v.push_back(30);
    v.push_back(50);

    sort(v.begin(), v.end());
    for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;

    //使用函数对象  改变算法策略,变为排序规则为从大到小 
    sort(v.begin(), v.end(), MyCompare());

    cout << "-----------------------" << endl;
    for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;

}

int main() {

    test01();

    system("pause");

    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-12-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档