Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C+中,每个人的第三个论点是什么+;? 什么是C++中每个参数的第三个参数? 我读了它的一元函数,但是我遇到的代码有一个类的对象作为第三个参数。_C++ - Fatal编程技术网

在C+中,每个人的第三个论点是什么+;? 什么是C++中每个参数的第三个参数? 我读了它的一元函数,但是我遇到的代码有一个类的对象作为第三个参数。

在C+中,每个人的第三个论点是什么+;? 什么是C++中每个参数的第三个参数? 我读了它的一元函数,但是我遇到的代码有一个类的对象作为第三个参数。,c++,C++,第三个参数可以是一个函数对象,它是一个可以在函数调用的后缀表达式中使用的对象 从C++标准(20.9个函数对象) 1功能对象类型是一种对象类型(3.9),可以是 函数调用中的后缀表达式(5.2.2,13.3.1.1)。231 a 函数对象是函数对象类型的对象。在这些地方 人们希望将指向函数的指针传递给 算法模板(第25条),指定接口接受 函数对象这不仅使算法模板起作用 使用指向函数的指针,但也使它们能够使用 任意函数对象 这里有一个例子 #include <iostream> #in

第三个参数可以是一个函数对象,它是一个可以在函数调用的后缀表达式中使用的对象

<>从C++标准(20.9个函数对象)

1功能对象类型是一种对象类型(3.9),可以是 函数调用中的后缀表达式(5.2.2,13.3.1.1)。231 a 函数对象是函数对象类型的对象。在这些地方 人们希望将指向函数的指针传递给 算法模板(第25条),指定接口接受 函数对象这不仅使算法模板起作用 使用指向函数的指针,但也使它们能够使用 任意函数对象

这里有一个例子

#include <iostream>
#include <algorithm>

int main()
{
    const size_t N = 10;
    int a[N] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

    struct A
    {
        void operator()( int x ) const { std::cout << x << ' '; }
    };

    std::for_each( a, a + N, A() );
    std::cout << std::endl;
}    
以下是类型为
struct A
的临时对象
A()
,它是一个函数对象,因为根据struct A中函数调用运算符
的定义,它可以在函数调用的后缀表达式中使用

比如你可以写

std::cout << A()( a[0] ) std::endl;
std::cout来自:

模板
每个_的函数(先输入计数器,后输入计数器,函数fn)
参数

第一个
最后一个

将迭代器输入到中的初始和最终位置 序列。使用的范围是
[第一个,最后一个)
,其中包含所有 第一个和最后一个之间的元素,包括 第一个,但不是最后一个指向的元素

fn

一元函数 接受范围内的元素作为参数。
这可以是函数指针,也可以是移动可构造的函数对象。
它的返回值(如果有)将被忽略


你能发布你遇到的代码吗?你可以找到这个函数的一个很好的描述。你需要寻找函子(函数对象)。第三个参数告诉你每个函数的
该做什么。@Banex:我不能发布确切的代码。我仍然可以传达代码的结构。希望这有帮助..Point Point(a,word.offset());for each(&buffer[0],&buffer[word.length()],point);您能提供一些链接让我更好地理解吗。@Arpit Jaiswal我自己不使用这种链接,所以我不知道它们。但是在任何情况下,您都应该阅读有关函数调用运算符重载的内容。
std::cout << A()( a[0] ) std::endl;
A obj;
std::cout << obj( a[0] ) std::endl;
template<class InputIterator, class Function>
Function for_each (InputIterator first, InputIterator last, Function fn);