c++ assign a class member function a lambda function for computing efficiency 计算效率

c++ assign a class member function a lambda function for computation efficiency

更新:(改写)。我希望通过将 class 成员函数的 运行 时间分配给以其他 class 成员为条件的众多函数之一来提高我的代码的计算效率。

一个推荐的解决方案使用#include <functional>function<void()>,如简单测试示例所示:

#include <iostream>
using namespace std;

struct Number {
  int n;
  function(void()) doIt;

  Number(int i):n(i) {};

  void makeFunc() {

      auto _odd  = [this]() { /* op specific to odd */ };
      auto _even = [this]() { /* op specific to even */ };

    // compiles but produces bloated code, not computatinally efficient
      if (n%2) doIt = _odd;   
      else     doIt = _even;  
  };
};

int main() {
  int i;
  cin >> i;
  Number e(i);
  e.makeFunc();
  e.doIt();
};

我发现编译后的代码(即调试程序集)异常复杂并且可能在计算上效率不高(所需的 目标 )。

是否有人有替代构造可以实现 计算效率 的最终目标,即在 运行 时间有条件地定义 class 成员函数.

捕获 lambda 表达式无法像您那样分配给常规函数指针。

我建议使用

std::function<void()> doIt;

而不是

void (*doIt)();