问题标签 [function-object]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
7230 浏览

c++ - 我如何将可调用对象作为参数传递

在 c++ 标准库中,几乎所有算法函数都将可调用对象作为参数。现在我想用我的程序试试这个东西。我打开了类似函数的标头,find_ifsearch_n()不太了解这些可调用对象参数的处理方式以及参数如何传递给它们,尤其是对于 lambda 对象(可bind()用于 lambdas,我不知道)


谁能解释一下这东西是如何工作的。提前致谢

0 投票
4 回答
634 浏览

c++ - 我在哪里定义谓词和函数对象?

我的问题纯粹是组织性质的,因此我意识到潜在的答案可能是主观的。经过多年的 C# 工作,我终于回到了 C++ 并且正在努力适应如何正确组织文件。

基本上,我想知道定义谓词和函数对象的最佳位置在哪里。目前,我在单个类中为 STL 算法使用了一个简单的函数对象。这个函数对象对任何其他类都没有用,那么我把它放在哪里呢?我是否将它放在同一个命名空间和头文件或 .cpp 文件中?我是将它放在匿名命名空间中还是将它放在它自己的头文件/cpp 文件中?

预先感谢您的任何和所有答案,

凯文

0 投票
1 回答
126 浏览

c++ - C++ 中带有标准输出的函数对象

如果没有 cout,程序将正确运行;为什么?输出缓存有问题?

0 投票
1 回答
566 浏览

c++ - 为什么 C++ 函数对象需要引用类型成员变量?

这是一个新手 C++ 问题。我正在阅读维基百科中的“功能对象”文章。该文章有一个 C++ 示例,类似于以下内容:

我有两个问题:

  1. 为什么 count 是常规变量而不是引用类型时编译失败?演示

  2. 为什么它无法编译它我将其更改ctor为以下?演示

    printClass(int &n) { count = n; }

谢谢。

编辑:感谢您的解释。我看到以下版本也有效。有理由选择一个而不是另一个吗?

编辑:根据 iammilind 的回复,这里是第 3 个版本,也可以使用const_cast<int &>.

0 投票
3 回答
297 浏览

c++ - 有没有一种惯用的方法可以在 C++ 中创建委托集合?

我想将具有相似签名的函数存储在集合中以执行以下操作:

我想到了函数指针:

或多态函数对象:

0 投票
1 回答
533 浏览

c++ - C++ 函数对象不能使用 std::for_each (VS2012) 创建总和

我在 Visual Studio 2012 中使用函数对象时遇到问题。

我创建了一个简单的std::vector,添加了ints0-9 并想使用函数对象创建它的总和。我的类定义(内联):

我的主要功能:

使用析构函数的输出,我会得到:

这是VS的错误吗?使用调试器运行它,项目被汇总,45但随后立即调用析构函数。我究竟做错了什么?

编辑:

这是 Stroustrup 的The C++ Programming Language第 18.4 章中的一个示例。我只是想知道它不起作用,因为我完全复制了它。

0 投票
1 回答
412 浏览

c++ - 如何仅使用元素成员函数和 STL 从容器中元素的成员函数累积结果?

我有一个元素容器,每个元素都有它的size()成员函数。我已经设法通过编写二进制操作来累积容器元素的总大小add_size

这给出了正确的输出:

我想要做到这一点,而不是仅仅为 size 成员函数定义二进制操作add_size,而是使用 mem_fun 和 binders。我怎样才能做到这一点?我怎样才能有效地做到这一点?我一开始add_element就卡住了。

我需要在 C++03 中工作的解决方案。

0 投票
3 回答
2039 浏览

c++ - 为什么函数对象应该是按值传递的

刚刚阅读了经典书籍《Effective C++, 3rd Edition》,在第20条中作者总结出内置类型、STL迭代器和函数对象类型更适合pass-by-value。我可以很好地理解内置和迭代器类型的原因,但是为什么函数对象应该是 pass-by-value,因为我们知道它无论如何都是类类型?

0 投票
6 回答
1950 浏览

c++ - 递归调用函数对象

如何从自身内部调用函数对象?好像不能用this。例子:

我放在什么位置??

0 投票
1 回答
284 浏览

python - python中的函数装饰器是否隐式调用装饰函数?

我的标题可能具有误导性。我的问题来自这个代码片段。

当我执行上面的代码时,我得到的输出为

但是,我认为输出应该只是

只是装饰函数,调用构造函数并执行myDecorator对象。我的印象是只有在aFunction()调用时才会执行装饰器模式。为什么会这样?

关于装饰器的另一个问题:

链接将装饰器解释为@ is just a little syntax sugar meaning "pass a function object through another function and assign the result to the original function.

this所指的函数对象,另一个函数和原始函数是什么?