首页 > TAG信息列表 > Functor

Hask 范畴上的函子

Hask 范畴上的函子 Functor 对应的是 Haskell 中的 typeclass (类型类) 例 class Functor (f :: * -> *) where fmap :: (a -> b) -> f a -> f b 这是 Haskell 中 Functor 的定义,Functor 映射态射的函数 fmap 没有定义。 用户自己给出 Functor instance 的 fmap 定义有没有可

Functor 怎么会事呢

Functor 怎么会事呢 Functor 2 axioms \(F(id_A) = id_{F(A)}\) \(F(f \circ g) = F(f) \circ F(g)\) 这两个公理能证明 \[F(f(A)) = F(f)(F(A)) \]吗? 还真能 变一下形式 即证: \[(F\circ f) (A) = (F(f) \circ F) (A) \]只需 \[\begin{aligned} F \circ f =& F(f) \circ F

2022-1-19 C++STL—— 仿函数 functor

仿函数是为了算法而服务的。 我的理解是,相较于函数,仿函数能够实现泛型参数。 如果一个 class 里面重载小括号,这样的函数创建出来的对象就叫做函数对象。 如果想要自己写出的 functor 和 STL 体系融为一体,需要继承 binary_function 和 unique_function 。 仿函数需要继承的

Java仿haskell

Functor函子 package cn.lyf.fx; import java.util.*; import java.util.function.*; //集成了Either函子 public class Functor { private Object value; protected Functor(Object val) { value = val; } /// Pointed///产生个函子 public

LG7124 [Ynoi2008] stcm【树分治,构造】

传送门 大概是全局平衡二叉树的思想( 假设当前递归到处理 \(x\) 的子树,首先我们先把以 \(x\) 为链顶的重链上的节点做了,因为这些集合互相包含,可以全部加一次再删掉。 接着要递归到轻子树,首先把重链节点加入,然后对轻子树建 Huffman 树,“加左进右,加右进左”,就可以对每个轻子树都把它

C++11的std::function源码解析

C++11的std::function源码解析 1、源码准备2、std::function简介3、源码解析3.1、std::function解析3.2、std::_Function_handler解析3.3、_Any_data解析3.4、std::_Function_base解析 4、总结 1、源码准备 本文是基于gcc-4.9.0的源代码进行分析,std::function是C++11才

STL算法——函数对象(仿函数)

全部案例链接 https://download.csdn.net/download/weixin_45525272/12536637 1 函数对象 重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象,也叫仿函数(functor),其实就是重载“()”操作符,使得类对象可以像函数那样调用。 注意: 1.函数

Functor、Applicative 和 Monad

Functor、Applicative 和 Monad 是函数式编程语言中三个非常重要的概念,尤其是 Monad。 说明:本文中的主要代码为 Haskell 语言,它是一门纯函数式的编程语言。 一、结论 关于 Functor、Applicative 和 Monad 的概念,其实各用一句话就可以概括: 一个 Functor 就是一种实现了 Functor ty

C++ functor

C++ functorfunctor參考連結 functor 假想有一個函數的功能是將傳進來的參數加一之後回傳: int add_one(int x){ return x + 1; } 如果我們想把該函數的功能改為加二,一種方法是再定義一個同樣的函數,但是把加一改成加二: int add_two(int x){ return x + 2; } 雖然上

java-使用比较器进行二进制搜索

我正在努力使这个工作.我需要编写一个可与​​binarySearch算法一起使用的仿函数,以查找长度在12到15个单位之间的梯子. 这是二进制搜索: public static <AnyType> int binarySearch(GenericSimpleArrayList<AnyType> a, AnyType x, Comparator<? super AnyType> cmp) { int lo

C如何将成员函数传递给函子参数?

我正在使用TRI DDS-这是我尝试调用的函数的原型: template<typename T , typename Functor > dds::sub::cond::ReadCondition::ReadCondition ( const dds::sub::DataReader< T > & reader, const dds::sub::status::DataState & status, const Functor &

c-在容器中使用n_th元素,但使用另一个键

我有两个向量.一种实际上保存数据(比如说是浮点数),另一种保存索引.我想在nth_element处传递索引向量,但我希望通过实际保存数据的向量来进行比较.我当时在考虑函子,但这只提供了我猜想的()运算符.我通过使数据向量成为全局向量来实现这一点,但这当然是不希望的. std::vector<floa

c – 为什么无状态函子的operator()不能是静态的?

为什么不允许无状态函子的operator()不是静态的?无状态lambda对象可转换为指向与其operator()具有相同签名的自由函数的指针. Stephan T. Lavavej on p. 6指出转换为函数指针只是一个运算符FunctionPointer()(引用).但我无法获得与非成员函数相对应的operator()指针.对于functor str

什么是C仿函数及其用途?

我一直听到很多关于C语言的仿函数.有人可以给我一个关于它们是什么的概述以及在什么情况下它们会有用吗?解决方法:仿函数几乎只是一个定义operator()的类.这使您可以创建“看起来像”一个函数的对象: // this is a functor struct add_x { add_x(int x) : x(x) {} int operator(

c – 使用非const表达式作为模板参数

这是对How do I get the argument types of a function pointer in a variadic template class?的跟进 我有这个结构来访问可变参数模板的参数: template<typename T> struct function_traits; template<typename R, typename ...Args> struct function_traits<std::function<

绕过嵌套仿函数(C)

有没有办法在主要的外面传递foo_?我在另一个关于仿函数的问题中看到了关于Boost的一些信息看起来它可能会起作用.这是answer在这个问题中提到的Boost.如果可以,我想避免Boost. #include <iostream> int main() { class foo { public: void operator()() {

C,Functors,特定任务/场景,将用户输入映射到函数

我已经了解了有关仿函数的基础知识,它们是如何创建的等等.我现在有一个特定的代码可能会从转换为仿函数中受益: 这是一个控制台输入.如果用户输入文本并按Enter键,则尝试将输入的文本作为命令执行.目前可用的命令存储在std :: map< std :: string,(void *)(std :: string)>其中map.f

c – 如何绑定到vector <> :: at?

在Visual C 2013中,以下代码给出了“模糊调用”编译错误: typedef vector<int> V; V v; auto b1 = bind(&V::at, &v); 现在我四处搜索,发现我应该投射到我想要的签名.所以我这样做: auto b2 = bind(static_cast<int(V::*)(V::size_type)>(&V::at), &v); 现在,错误是: 'static_cas

STL之函数对象

摘要:本文主要介绍了函数对象(仿函数)的基本概念,并且举例子对其进行基本的使用。 1、基本概念 1.1 什么是函数对象? 重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象,也叫仿函数(functor),其实就是重载“()”操作符,使得类对象可以像函数那样调用

在C中编写structarray map functor的最简单方法

这是对最可读方式的意见的调查 – 无论是使用C指针到成员,字节偏移还是模板化仿函数来定义“从结构foo中选择成员X”. 我有一个包含大量结构的类型,我正在编写一个实用函数,它基本上在某些范围内作为reduce运行.每个结构将一组因变量与一个独立维度的某个点相关联 – 发明一个简化

当与for_each或std :: transform一起使用时,如何调用C函子构造函数

我之前从未使用过c仿函数,所以我只是想了解它们是如何工作的. 例如假设我们有这个仿函数类 class MultiplyBy { private: int factor; public: MultiplyBy(int x) : factor(x) { } int operator () (int other) const { return factor * other; } };

c – 模板参数作为仿函数模板

我正在尝试创建一个从适配器执行仿函数的线程类.代码显示了我的尝试. #include <iostream> struct null_t { }; typedef void (*thread_func_t)(); typedef void (*thread_func_2_t)(int); template <typename F, typename P = null_t> class adapter { public: adapter(F

c – 为stl容器使用没有默认构造函数的仿函数

我想将自己的比较器用于std :: set,它需要将一个参数传递给它的构造函数: template <class T = double> class EpsCompare { public: EpsCompare(T input_eps) : _eps(input_eps) {}; bool operator() (const T & element1, const T & element2) const { return (

c – std :: greater()和std :: greater之间的区别?

此代码有效: #include <iostream> #include <queue> #include <vector> #include <functional> using namespace std; int main(){ priority_queue<int,vector<int>,greater<int> > pq; pq.push(1); cout<<pq.top()&

如何在C中使用自定义排序成员函数的sort()?

我有一个关于将比较函数传递给sort()的问题. 我想要做的是定义一个sort()函数,该函数在计算时考虑了我想要进行排序的类的成员变量. 基本上,我的代码看起来像这样(简化为只显示相关部分): MappingTechnique.h struct MappingTechnique { vector<int> usedIndexCount; }; stru