Skip to content

内建的函数对象

内建函数对象的意义

概念

  • STL 内建了一些函数对象 分类
  • 算数仿函数
  • 关系仿函数
  • 逻辑仿函数 用法
  • 这些仿函数产生的对象,用法和一般函数完全相同
  • 使用内建函数的时候,需要引用头文件#include<functional>

算数仿函数

功能描述

  • 实现了一些基本的算术运算,如加减乘除
  • 其中 negate 是一元运算 仿函数模型
  • 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>

实例

c++
#include<iostream>
#include<functional>
using namespace std;

int main()
{
    int a = 10, b = 5;
    cout << plus<int>()(a, b) << endl; // 15
    cout << minus<int>()(a, b) << endl; // 5
    cout << multiplies<int>()(a, b) << endl; // 50
    cout << divides<int>()(a, b) << endl; // 2
    cout << modulus<int>()(a, b) << endl; // 0
    cout << negate<int>()(a) << endl; // -10
    return 0;
}

关系仿函数

功能描述

  • 实现了一些基本的关系运算,如大于小于等于 仿函数模型
  • 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 less<T>
  • template<class T> bool greater_equal<T>
  • template<class T> bool less_equal<T>

实例

c++
#include<iostream>
#include<functional>
using namespace std;

int main()
{
    int a = 10, b = 5;
    cout << equal_to<int>()(a, b) << endl; // 0
    cout << not_equal_to<int>()(a, b) << endl; // 1
    cout << greater<int>()(a, b) << endl; // 1
    cout << less<int>()(a, b) << endl; // 0
    cout << greater_equal<int>()(a, b) << endl; // 1
    cout << less_equal<int>()(a, b) << endl; // 0
    return 0;
}

逻辑仿函数

功能描述

  • 实现了一些基本的逻辑运算,如与或非 仿函数模型
  • template<class T> bool logical_and<T>
  • template<class T> bool logical_or<T>
  • template<class T> bool logical_not<T>

实例

c++
#include<iostream>
#include<functional>  // 引入functional头文件
using namespace std;

int main()
{
    int a = 10, b = 5;
    cout << logical_and<int>()(a > 5, b < 10) << endl; // 1
    cout << logical_or<int>()(a > 5, b < 10) << endl; // 1
    cout << logical_not<int>()(a > 5) << endl; // 0
    return 0;
}

总结

  • STL 内建了一些函数对象,可以方便地实现一些基本的运算和逻辑运算
  • 这些函数对象可以作为参数传递给算法,实现一些高级功能