cplus:stl函数对象

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
cplus:stl函数对象 [2025/11/29 11:29] – 创建 张叶安cplus:stl函数对象 [2025/11/29 12:42] (当前版本) – [算术仿函数] 张叶安
行 1: 行 1:
-{:c_.pdf |}}+====== 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>'' | 取反仿函数 | 
 + 
 +**示例:** 
 +<code cpp> 
 +#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; 
 +} 
 +</code>

该主题尚不存在

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

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