performance - 类的 operator() 或将函数绑定(bind)为仿函数?

标签 performance c++11 coding-style functor

有两种方法可以创建仿函数(一个保存状态的函数):

  1. 绑定(bind)一个函数并定义一个状态:bind(f, _1, state)

    双 g(双 x,双状态){ 返回x+状态; } function f = bind(g,_1,state);

  2. 使用 () 运算符和一个类:

struct f { 
  double state; 
  f(double state_):state(state_) {} 
  double operator()(double x) {return x+state;}
};

我发现 bind-method 写起来更快,但我想知道是否有一些隐藏的石头,因为在文献中的大部分时间我都将仿函数视为类的 () 运算符。

最佳答案

3.方式是lambda表达式:

auto f = [state]( double x ) { return x * state; };

关于performance - 类的 operator() 或将函数绑定(bind)为仿函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18169838/

相关文章:

c# - 提高 web 应用程序的 asp.net 速度

java - 由于我的黑客等级解决方案超时而终止

javascript - 关于如何在 IE 中优化某些 Jquery 命令性能的提示

sql-server - 准备只读数据库的最佳方式

c++ - 使用 static、const、constexpr 的全局声明/初始化

.net - `1 or ` 2 后缀对于 Microsoft 创建的类意味着什么?

c++ - 从 C++ 项目中引用数据文件

c++ - 函数尝试 block 和 noexcept

c++11 - g++ 4.8.* std::chrono 未声明

c# - 你如何解决 "StyleCop C# style"和 "Framework Design Guidelines C# style"之间的差异?