zoukankan      html  css  js  c++  java
  • STL之谓词

    摘要:本文主要介绍了谓词的相关内容,并且用简单的代码对其进行了应用。

    1、基本概念

    1.1 什么是谓词?

    谓词是指普通函数或重载的operator()返回值是bool类型的函数对象(仿函数)。

    1.2 谓词的分类

    如果operator接受一个参数,那么叫做一元谓词,如果接受两个参数,那么叫做二元谓词,谓词可作为一个判断式。

    2、代码示例

     1 #include<iostream>
     2 #include <vector>
     3 #include<algorithm>
     4 
     5 using namespace std;
     6 
     7 class Over20 {  //创建函数对象
     8 public:
     9     bool operator()(int val) {
    10         return val > 20;
    11     }
    12 };
    13 
    14 void test01() {
    15     vector<int>v;
    16     v.push_back(10);
    17     v.push_back(20);
    18     v.push_back(30);
    19     v.push_back(40);
    20 
    21     //查找第一个大于20的数字
    22     vector<int>::iterator pos = find_if(v.begin(), v.end(),Over20());  //返回值是一个地址,第三个参数是匿名对象
    23     if (pos!=v.end())
    24     {
    25         cout << "找到了第一个大于20的数字; " <<*pos<< endl;
    26     }
    27     else
    28     {
    29         cout << "未找到" << endl;
    30     }
    31 }
    32 
    33 //二元谓词
    34 class MyCompare
    35 {
    36 public:
    37     bool operator()(int v1, int v2)
    38     {
    39         return v1 > v2;
    40     }
    41 };
    42 void test02()
    43 {
    44     vector<int>v;
    45     v.push_back(10);
    46     v.push_back(20);
    47     v.push_back(30);
    48     v.push_back(40);
    49     v.push_back(50);
    50 
    51     sort(v.begin(), v.end(), MyCompare());
    52 
    53     //匿名函数  lambda表达式  [](){};
    54     for_each(v.begin(), v.end(), [](int val) { cout << val << " "; });
    55 }
    56 
    57 
    58 int main() {
    59     //test01();
    60     test02();
    61     system("pause");
    62     return 0;
    63 }
  • 相关阅读:
    Python作业本——第4章 列表
    Python作业本——第3章 函数
    Python作业本——前言
    Yandex企业邮箱申请教程
    如何看待HTTP/3
    图床合集
    Windows File Recovery
    在线检测你的密码是否被泄露
    mybatis的mapper文件内容回顾
    java中系统中的常量
  • 原文地址:https://www.cnblogs.com/lzy820260594/p/11399129.html
Copyright © 2011-2022 走看看