cplus:stl函数对象

STL - 函数对象

概念:

  • 重载函数调用操作符的类,其对象常称为函数对象
  • 函数对象使用重载的()时,行为类似函数调用,也叫仿函数

本质:

函数对象(仿函数)是一个,不是一个函数。

特点:

  • 函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值。
  • 函数对象超出普通函数的概念,函数对象可以有自己的状态
  • 函数对象可以作为参数传递。

概念:

  • 返回bool类型的仿函数称为谓词
  • 如果 operator() 接受一个参数,那么叫做一元谓词
  • 如果 operator() 接受两个参数,那么叫做二元谓词

概念:

  • 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> 取反仿函数

示例:

#include <iostream>
#include <functional> // 必须包含头文件
 
void test01() {
    // negate 一元仿函数 取反
    std::negate<int> n;
    std::cout << n(50) << std::endl; // 输出 -50
 
    // plus 二元仿函数 加法
    std::plus<int> p;
    std::cout << p(10, 20) << std::endl; // 输出 30
}
 
int main() {
    test01();
    return 0;
}
请输入您的评论. 可以使用维基语法:
 

该主题尚不存在

您访问的页面并不存在。如果允许,您可以使用创建该页面按钮来创建它。

  • cplus/stl函数对象.txt
  • 最后更改: 2025/11/29 12:42
  • 张叶安