问题标签 [functor]
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.
c++ - C++ 仿函数 - 意外行为?
我编写了这个程序,它使用仿函数对一些整数进行排序:
排序工作正常,但计算比较次数的部分给出了我没想到的结果:
我在想这个结构会被重用,计算和存储比较的次数。但是,它似乎是复制它,或者其他一些行为,因为打印出来的数字是 1、1、1、2、3,而不是 1、2、3、4、5。我究竟做错了什么?
c++ - 传递嵌套函子 (C++)
有没有办法在 main 之外传递 foo_ ?我在另一个关于函子的问题中看到了一些关于 Boost 的信息。看起来它可能会起作用。这是该问题中提到 Boost的答案。如果可以的话,我想避免使用Boost。
c++ - 如何在 C++ 中为多个类实现通用函子
假设您有两个(或更多)具有私有成员向量的类:
你有一个仿函数类,它有一个状态并在一个通用向量上工作(对元素进行排序或计数或类似的东西)。函子的状态由函子正在处理的第一个向量初始化。如果稍后将仿函数应用于另一个向量,它将根据状态改变其行为(以相同的方式排序或在与第一个向量一样多的元素之后修剪第二个向量等)
在不将私有向量暴露给其他类或类的用户的情况下,实现这样的函子(设计模式或功能接口?)的最佳方法是什么?
例如:用户想用 A 类的对象初始化这个函子,然后将这个初始化的函子用于 B 类的一个或多个对象。用户不能(也不应该)使用私有向量直接作为函子的函数参数。
java - 迭代函数
在Java中可以做这样的事情吗?
我只调用了几个函数,但我需要编写它们,如下所示:
而且我想避免写出数百行函数调用。
我试过研究函数指针和仿函数,但没有找到任何相关的东西。
c++ - 在比较函数中使用非静态类成员
我目前正在开发一个语法分析器类,该类需要在代码的某个点对包含运算符信息的结构进行排序。每个运算符都有一个优先级,这是用户通过我的分析器类的公共成员函数定义的。因此,在排序时,我需要我的排序函数根据相应运算符的优先级对元素进行排序。我正在使用以下代码来比较元素:
请注意,我必须将此函数设为静态,因为它是在类中定义的。
事实上,我的 compare 函数比较了 type 的元素op_char
,然后我从包含 type 元素的 map 中检索 operator def ,这些元素op_def
有一个字段“priority”。
我面临的问题是我无法使用std::sort(ops.begin(), ops.end(), std::mem_fun_ref(&parser::op_comp))
(其中 ops 是一种vector of op_info)
方法。我收到以下错误,这听起来很合乎逻辑:
错误:在静态成员函数中无效使用成员 `parser::operators'
这是我的问题:如何强制 std::sort 使用使用类非静态成员元素的 comp 函数?显然该功能应该是非静态的,但如果我不使其成为静态,我将无法使用它......
c++ - 使用 STL 和一元函数适配函子检查列表成员资格
我试图编写一个简短的实用函子,它接受两个 std::pair 项目并测试它们的相等性,但忽略元素的顺序。此外(这是我遇到麻烦的地方)我编写了一个函数来获取这些 std::pair 项目的容器并测试容器中给定对参数的成员资格。
我想不出一种允许通用容器选择的干净方法,所以我现在将 std::vector 硬编码为容器类型。对使容器类型通用的帮助也将不胜感激,但现在我只想让上面的内容编译和工作。我得到的错误是:
按照建议通过添加“类型名称”来更改代码只会导致以下错误:
c++ - 将仿函数作为函数指针传递
我正在尝试在 C++ 应用程序中使用 C 库,并在以下情况下发现了自己(我知道我的 C,但我对 C++ 还很陌生)。在 C 端,我有一组函数,它们以函数指针作为参数。在 C++ 方面,我有一个带有仿函数的对象,它与 C 函数所需的函数指针具有相同的签名。有没有办法使用 C++ 仿函数作为函数指针传递给 C 函数?
c++ - 指向 C++ 中成员函数的函数指针
我需要调用一个需要函数指针的方法,但我真正想要传递给它的是函子。这是我正在尝试做的一个例子:
我一直无法找到编译最后一行printer(g, 4) 的方法。有没有办法让它工作?我唯一能控制的是方法“main”和类“adderClass”。
haskell - 编写我的 fmap 时遇到问题
我正在尝试为这种类型编写 fmap
其中 Point 定义为
我的实例 def 是
我收到以下编译错误,我不知道为什么
有任何想法吗?
c++ - C++ 中的委托是什么意思?
c++ 中的委托是什么意思,在 c/c++ 中将比较函数/函子作为最后一个参数的排序函数是委托的一种形式吗?