欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > STL--函数对象

STL--函数对象

2025/2/23 15:06:09 来源:https://blog.csdn.net/wuhaibin8013/article/details/144209728  浏览:    关键词:STL--函数对象

STL(Standard Template Library)中的函数对象(也称为仿函数,Functor)是一种重载了函数调用操作符 operator() 的类对象。函数对象可以像普通函数一样被调用,但它们可以保存状态,并且可以作为参数传递给算法。STL 提供了多种类型的函数对象,以下是一些常见的类型及其区别:

1. 一元函数对象(Unary Function Object)

特点

  • 接受一个参数并返回一个结果。

  • 通常用于对单个元素进行操作。

示例

struct Increment {int operator()(int x) const {return x + 1;}
};

2. 二元函数对象(Binary Function Object)

特点

  • 接受两个参数并返回一个结果。

  • 通常用于对两个元素进行操作。

示例

struct Add {int operator()(int x, int y) const {return x + y;}
};

3. 谓词(Predicate)

特点

  • 返回布尔值的一元函数对象。

  • 通常用于条件判断。

示例

struct IsEven {bool operator()(int x) const {return x % 2 == 0;}
};

4. 二元谓词(Binary Predicate)

特点

  • 返回布尔值的二元函数对象。

  • 通常用于比较两个元素。

示例

struct LessThan {bool operator()(int x, int y) const {return x < y;}
};

5. 算术函数对象(Arithmetic Function Object)

特点

  • 提供基本的算术操作(加、减、乘、除等)。

  • 通常用于算术运算。

示例

std::plus<int> add;
std::minus<int> subtract;
std::multiplies<int> multiply;
std::divides<int> divide;

6. 比较函数对象(Comparison Function Object)

特点

  • 提供基本的比较操作(等于、不等于、小于、大于等)。

  • 通常用于比较运算。

示例

std::equal_to<int> equal;
std::not_equal_to<int> not_equal;
std::less<int> less;
std::greater<int> greater;

7. 逻辑函数对象(Logical Function Object)

特点

  • 提供基本的逻辑操作(与、或、非)。

  • 通常用于逻辑运算。

示例

std::logical_and<bool> logical_and;
std::logical_or<bool> logical_or;
std::logical_not<bool> logical_not;

8. 绑定器(Binder)

特点

  • 将二元函数对象的一个参数绑定到一个固定值,生成一个一元函数对象。

  • 通常用于简化函数对象的使用。

示例

std::bind1st(std::less<int>(), 10); // 生成一个一元函数对象,判断是否小于10
std::bind2nd(std::greater<int>(), 5); // 生成一个一元函数对象,判断是否大于5

9. 函数适配器(Function Adapter)

特点

  • 将函数对象与其他函数对象或函数组合使用。

  • 通常用于组合多个操作。

示例

std::not1(std::less<int>()); // 生成一个一元函数对象,判断是否不小于
std::not2(std::greater<int>()); // 生成一个二元函数对象,判断是否不大于

总结

  • 一元函数对象:接受一个参数并返回一个结果,适用于对单个元素进行操作。

  • 二元函数对象:接受两个参数并返回一个结果,适用于对两个元素进行操作。

  • 谓词:返回布尔值的一元函数对象,适用于条件判断。

  • 二元谓词:返回布尔值的二元函数对象,适用于比较两个元素。

  • 算术函数对象:提供基本的算术操作,适用于算术运算。

  • 比较函数对象:提供基本的比较操作,适用于比较运算。

  • 逻辑函数对象:提供基本的逻辑操作,适用于逻辑运算。

  • 绑定器:将二元函数对象的一个参数绑定到一个固定值,生成一个一元函数对象,适用于简化函数对象的使用。

  • 函数适配器:将函数对象与其他函数对象或函数组合使用,适用于组合多个操作。

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词