STL——函数对象和谓词

函数对象

概念
  • 重载函数调用操作符()的类,其对象常被称为仿函数

  • 函数对象使用重载的()时,行为类似函数调用,也叫做仿函数

  • 本质上仿函数是一个类,并不是一个函数

函数对象使用

  • 函数对象在使用时,可以像普通函数一样调用,可以有参数,可以有返回值

  • 函数对象超出普通函数的概念,函数对象可以有自己的状态(例如被使用了多少次)

  • 函数对象可以作为参数传递

谓词

一元谓词

概念
  • 返回bool类型的仿函数称为谓词

  • 如果operator()接受一个参数,那么叫做一元参数

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

例如:


  

内建函数对象

  • 这些内建函数对象用法和一般的函数对象完全相同

  • 使用需要引入头文件 #include<functional>

算术仿函数

实现四则运算

  • template<class T> T plus<T> //加法仿函数

  • template<class T> T minus<T> //减法仿函数

  • template<class T> T multiplies<T> //乘法仿函数

  • template<class T> T divides<T> //除法仿函数

  • template<class T> T modulus<T> //取模仿函数

  • template<class T> T negate<T> //取反仿函数

全都是用模板,那么复用性更高

关系仿函数

实现关系对比

  • template<class T> bool equal_to<T> //等于

  • template<class T> bool not_equal_to<T> //不等于

  • template<class T> bool greater<T> //大于,最常用

  • template<class T> bool greater_equal<T> //大于等于

  • template<class T> bool less<T> //小于

  • template<class T> bool less_equal<T> //小于等于

逻辑仿函数

  • template<class T> bool logical_and<T> //逻辑与

  • template<class T> bool logical_or<T> //逻辑或

  • template<class T> bool logical_not<T> //逻辑非

相关推荐

  1. STL——函数对象谓词

    2024-05-12 00:10:06       35 阅读
  2. C++算法——函数对象\谓词\内置仿函数

    2024-05-12 00:10:06       35 阅读
  3. hive SQL谓词下推

    2024-05-12 00:10:06       31 阅读
  4. Kotlin函数对象

    2024-05-12 00:10:06       55 阅读
  5. Linux C++ 034-STL谓词

    2024-05-12 00:10:06       34 阅读
  6. C++提高编程——STL函数对象

    2024-05-12 00:10:06       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-12 00:10:06       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-12 00:10:06       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-12 00:10:06       87 阅读
  4. Python语言-面向对象

    2024-05-12 00:10:06       96 阅读

热门阅读

  1. CSS盒模型

    2024-05-12 00:10:06       35 阅读
  2. stylus详解与引入

    2024-05-12 00:10:06       36 阅读
  3. 十大科技回复框上

    2024-05-12 00:10:06       28 阅读
  4. 高斯数据库创建函数的语法

    2024-05-12 00:10:06       34 阅读