function-object相关内容
我看到函数对象经常与 STL 算法一起使用.函数对象是不是因为这些算法而产生的?你什么时候在 C++ 中使用函数对象?它有什么好处? 解决方案 正如 jdv 所说,使用函子代替函数指针,函数指针更难优化和内联编译器;此外,函子的一个基本优点是它们可以轻松地在调用它们之间保持状态1,因此它们可以根据其他时间被调用而不同地工作,以某种方式跟踪它们的参数用过,... 例如,如果您想对两个整
..
我想创建一个函数对象,它也有一些属性.例如在 JavaScript 中我会这样做: var f = function() { }f.someValue = 3; 现在在 TypeScript 中,我可以将它的类型描述为: var f: { (): any;someValue:数字;}; 但是我实际上无法构建它,而不需要演员.如: var f: { (): any;someValue:数字
..
我一直听到很多关于 C++ 中的函子的消息.有人能给我一个关于它们是什么以及它们在什么情况下有用的概述吗? 解决方案 仿函数几乎只是一个定义 operator() 的类.这使您可以创建“看起来像"函数的对象: //这是一个函子结构 add_x {add_x(int val) : x(val) {}//构造函数int operator()(int y) const { return x +
..
我有一个如下所示的脚本.意图是使用不同的过滤方法来过滤列表. 这是代码. 23 类 list_filter {4 有@.my_list = (1..20);56 方法 filter($l) { return True;}78#过滤方式9 方法 filter_lt_10($l) {10 if ($l > 10) { return False;}11 返回真;12 }1314#过滤方式15
..
场景一:模板函数pred templatebool pred(T t) {/* 返回一个基于 t 的 bool */} 场景二:一组重载同名的函数pred bool pred(A t) {/* 返回一个基于 t 的 bool */}bool pred(B t) {/* 返回一个基于 t 的 bool */}bool pred(C t) {/* 返回一个基于 t 的 bool */}...
..
我正在寻找一元函子,该函子将取消引用它的参数并返回结果.当然,我可以写一个,似乎应该已经存在了. 因此给出了代码: const auto vals = { 0, 1, 2, 3 }; vector test(size(vals), nullptr); iota(begin(test), end(test), data(vals)); transform(cb
..
根据斯科特·迈耶斯(Scott Meyers)的观点,C ++超越C的一个方面是函数对象比函数指针要快.他说这是因为内联了函数对象,从而提高了速度. 对此我有两个问题: 我们如何验证实际上是内联的函数对象?我们可以在实践中验证吗? 函数对象的内联是否取决于我们使用的编译器,还是所有编译器的行为都如此? 解决方案 C ++和C标准为编译器留出了很多自由.编译器可以自由地在每
..
说有一个函数可以计算阶乘(n) 阶乘(7)是否为从1到7的n中的每一个创建7个函数对象 并在必要时使用这些值(对于factorial(8)就像factorial(7)* 8一样) 解决方案 这取决于语言和语言实现. 在许多功能语言(例如Haskell)中,保证某个功能什么都不会改变;只返回一个值.由于没有副作用,因此该语言可以记住/缓存或“记住"函数调用的结果. 在
..
问题:有没有办法使用字符串在Python中制作函数对象? 信息:我正在一个项目中,我将数据存储在sqlite3服务器后端中。没什么可疯狂的。 DAL类通常是通过代码生成来完成的,因为代码是如此平凡。但这给了我一个主意。在python中找不到属性时,如果定义函数 __ getattr __ ,它将在错误之前调用它。因此,我通过解析器和逻辑树来计算它的方式可以动态生成第一次调用时所需的代码,然后
..
假设我有这个类(从std :: Vector继承,这只是一个例子) #include C类:公共向量T { //我不想使用静态关键字 void Transformation(T i){ i * = 100; } public: void method(){ for_each(t
..
我经常听到很多有关C ++中的函子的信息。有人可以概述一下它们是什么,在什么情况下它们将是有用的吗? 解决方案 函子几乎是只是一个定义operator()的类。这样您就可以创建“看起来像”函数的对象: //这是一个函子 结构add_x { add_x(int val):x(val){} //构造函数 int operator()(int y)const {return x +
..
在C ++ 17中,实现overload(fs...)函数非常简单,该函数在给定任意数量fs...满足template struct overloader : Ts... { template overloader(TArgs&&... xs) : Ts{forward(xs)}... { } using Ts
..
我喜欢在javascript中,我可以创建一个函数,然后为该函数添加更多方法和属性 myInstance = function(){return 5} myInstance.attr = 10 我想要创建一个类来生成这些对象。我假设我必须从Function基类继承。 换句话说,我想: var myInstance = new myFunctionC
..
C ++标准将函数对象定义为: 函数对象类型是一种对象类型,可以是$ b的类型在函数调用中$ b postfix-expression。 (链接) 首先,我想到函数对象是函子,但后来我意识到对于函数指针 ptr 类型 P (不是函数,而是函数指针), std :: is_object_v
是 true ,可以使用 ptr(Args ...)语法来调用。 我正确的说,函数指
..
我想创建一个函数对象,它也有一些属性。例如在JavaScript中我会做: var f = function(){} f.someValue = 现在在TypeScript中我可以把它的类型描述为: var f:{():any; someValue:number; }; 但是我不能实际构建它,如: var f:{():any; so
..
C ++ 我试图通过(函数对象)类(variableadic)模板实现函数包装。类具有作为其唯一的数据成员的函数指针,该函数指针由被包装的函数指针初始化或分配。参数化构造函数接受一个函数指针并通过它初始化成员。 operator()方法接受参数(或无),并使用它们调用包装函数。至少这是这个想法。我得到许多错误,我标记与评论。 VC11(与2012年11月CTP,启用可变参数模板)给我错误C2
..
这似乎应该经常被问到和回答,但我的搜索fu已经失败了我。 我正在写一个函数,我想接受某种类型的通用可调用对象(包括裸函数,手动函数对象, bind 或 std :: function 函数目前声明如下: 模板 size_t do_something(const T& a,const F& f) { T internal_va
..
在 N3421 - 使操作符更大 ,std函数对象的新特化是: 模板 { template auto operator()(T& t,U&& u)const - > decltype(std :: forward(t)+ std :: forward U(u)); }; 而不是
..
如何检测null和一元函数指针,std :: function对象和functor(包括lambdas)的返回类型和参数类型? Boost的 function_traits 和功能特质不太适合我,但我可以补充或替换它们。 我可以这样做: namespace nsDetail { class Dummy {Dummy(); }; } template
..
如何检测null和一元函数指针,std :: function对象和functor(包括lambdas)的返回类型和参数类型? Boost的 function_traits 和功能性特质不太适合我,但我可以补充或替换它们。 我可以这样做: 命名空间nsDetail { class Dummy {Dummy(); }; } template s
..