美文网首页
一元谓词案例与二元谓词案例

一元谓词案例与二元谓词案例

作者: 程序爱好者 | 来源:发表于2019-08-23 19:11 被阅读0次

谓词

一元谓词: 函数参数1个,函数返回值是bool类型,可以作为一个判断式

二元谓词: 函数参数2个,函数返回值是bool类型

谓词可以使一个仿函数,也可以是一个回调函数。

一元谓词案例

求0到500整数哪些数被19整除

#include <iostream>

using namespace std;

#include <queue>

#include<vector>

template <typename T>

class Isdiv

{

public:

    Isdiv(const T &divisor) //

    {

        this->divisor = divisor;

    }

    bool operator()(T &t)  //1元谓词 例子

    {

        return (t%divisor == 0);

    }

protected:

private:

    T divisor;

};

void main()

{

    vector<int> v2;

    for (int i = 1; i<500; i++)

    {

        v2.push_back(i);

    }

    vector<int>::iterator it;

    int a = 4;

    Isdiv<int> mydiv(4);

    // _InIt find_if(_InIt _First, _InIt _Last, _Pr _Pred)  //返回的是迭代器

    int cn = 0;

    it = find_if(v2.begin(), v2.end(), Isdiv<int> (19));

    while(it != v2.end())

    {

        cn++;

        cout << "第"<<cn<<"个被4整除的数是:" << *it << endl;

        it = find_if(it+1, v2.end(), Isdiv<int>(19));

    }

    cout << "一共有" << cn << "个数被19整除" << endl;

    system("pause");

}

免费C/C++基础丶进阶资料,还有实践课程免费领,加群728483370

二元谓词

//1个key值可以对应多个valude(分组)

//公司有销售部 sale (员工2名)、技术研发部 development (1人)、财务部 Financial (2人)

//人员信息有:姓名,年龄,电话、工资等组成

//通过 multimap进行 信息的插入、保存、显示

//分部门显示员工信息

#include <iostream>

#include <string>

#include <map>

using namespace std;

class Person

{

public:

    Person(string name,int age)

    {

        m_name = name;

        m_age = age;

    }

    string m_name;

    int m_age;

protected:

private:

};

int main(void)

{

    Person p1("张三",32),p2("李四",33),p3("王二",34),p4("麻子",35),p5("赵五",36);

    multimap<string, Person> map;

    map.insert(make_pair("Sale", p1));

    map.insert(make_pair("Sale", p2));

    map.insert(make_pair("Development", p3));

    map.insert(make_pair("Development", p4));

    map.insert(make_pair("Financial", p5));

    for (multimap<string, Person>::iterator it = map.begin(); it != map.end();it++)

    {

        cout << it->first << "\t" << (it->second).m_name <<endl;

    }

    int num = map.count("Development");

    cout << "开发部的人数:" << num << endl;

    cout << "开发部的员工信息:" << endl;

    multimap<string, Person>::iterator new_it = map.begin();

    while (new_it != map.end() )

    {

        if (new_it->first == "Development")

        {

            new_it->second.m_age = 18;

            cout << new_it->first << "\t" << (new_it->second).m_name << "\t" << (new_it->second).m_age << endl;

        }

          new_it++;

    }

    cout<<"Hello!"<<endl;

    system("pause");

    return 0;

}

免费C/C++基础丶进阶资料,还有实践课程免费领,加群728483370

#include <iostream>

using namespace std;

#include <queue>

#include<vector>

#include<set>

struct CompareNoCase

{

    bool operator()(const string &str1, const string &str2) const

//在调用operator()的时候要求operator()也具有const属性,否则就会导致丢失const限定符的错误

    {

        string str1_;

        str1_.resize(str1.size());

        transform(str1.begin(), str1.end(), str1_.begin(), tolower); //预定义函数对象

        string str2_;

        str2_.resize(str2.size());

        transform(str2.begin(), str2.end(), str2_.begin(), tolower); //预定义函数对象

        return (str1_ < str2_); // 从小到大进行排序

    }

};

void  main()

{

    set<string> set1;

    set1.insert("bbb");

    set1.insert("aaa");

    set1.insert("ccc");

    set<string>::iterator it = set1.find("aAa"); //find函数 默认 区分大小写

    if (it == set1.end())

    {

        cout << " 没有 查找到 aaa " << endl;

    }

    else

    {

        cout << " 查找到 aaa " << endl;

    }

    set<string, CompareNoCase> set2;

    set2.insert("bbb");

    set2.insert("aaa");

    set2.insert("ccc");

    set<string, CompareNoCase>::iterator it2 = set2.find("aAa");

    if (it2 == set2.end())

    {

        cout << " 没有 查找到 aaa " << endl;

    }

    else

    {

        cout << " 不区分大小的的查找  查找到 aaa " << endl;

    }

    system("pause");

}

免费C/C++基础丶进阶资料,还有实践课程免费领,加群728483370

免费C/C++基础丶进阶资料,还有实践课程免费领,加群728483370

相关文章

  • 一元谓词案例与二元谓词案例

    谓词 一元谓词: 函数参数1个,函数返回值是bool类型,可以作为一个判断式 二元谓词: 函数参数2个,函数返回值...

  • C++高级之C++内部源码阅读与手写多元谓词

    1.map容器学习 2.multimap 容器学习 3.谓词 与仿函数 空谓词 一元谓词 二元谓词 4.fo...

  • 16/8 函数对象(函数符/仿函数/类对象)

    1.定义 2.相关名词 生成器、一元函数(谓词)、二元函数(二元谓词) 谓词:返回值是bool的只有一个参数的类对...

  • STL算法之谓词

    概述 返回值类型为bool的普通函数或函数对象都叫谓词。 分类 一元谓词:一个参数 一般用于查找策略 二元谓词:两...

  • lambda表达式

    根据算法接受一元谓词还是二元谓词,我们传递给算法的谓词必须严格接受一个或两个参数。但是,有时我们希望进行的操作需要...

  • C++ STL 否定谓词 not1() not2()

    作用 not1是构造一个与谓词结果相反的一元函数对象。not2是构造一个与谓词结果相反的二元函数对象。 头文件 #...

  • 谓词

    谓词是一个可调用的表达式,其返回结果是一个能用作条件的值。标准库算法所使用的谓词分为两类:一元谓词(unary p...

  • IOS中谓词的使用

    何为“谓词”,即大家所熟悉的NSPredicate。 谓词表达式 说到谓词,少不了谓词表达式,谓词表达式有三个部分...

  • iOS开发小总结(二)

    谓词的使用 谓词就是通过NSPredicate给定的逻辑条件作为约束条件,完成对数据的筛选。 定义谓词对象,谓词对...

  • 使用explain分析Spark SQL中的谓词下推,列裁剪,映

    摘要:Spark SQL,谓词下推,映射下推,列裁剪 谓词下推 Predicate PushDown 谓词下推的目...

网友评论

      本文标题:一元谓词案例与二元谓词案例

      本文链接:https://www.haomeiwen.com/subject/klxxectx.html