C++ 函数调用

信使

想象一下运行时func需要的函数var是否可以在 C++ 下funcvar作为参数调用也就是说,有这样的事情

func(var, i) = func(i);

我想这样做是为了简单的可读性。在我的班级中,我可以将其设置var为全局参数,然后仅调用,func(i)但是如果我要使用线程,这会带来麻烦......

但是请注意,func使用var过程中的运行时间。前任:

int func(int var , int i){
return i+var;
}

事实上,我将多次调用 func(),但所有这些调用共享相同的var. 例如:代替

int var=2;
int res=   func(var, 0) + func(var, 1) +..... func(var, n);

我会写得更简洁(在它是一样的var

int var=2;
int res=   func(0) + func(1) +..... func(n);
勇士

你可以使用 lambdas 来做到这一点:

auto bound_func = [var](auto i) { return func(var, i); }

或者您可以通过将 存储var在结构中来获得更多自由

struct func_binder
{
    var v_;

    func_binder(var v)
      : v_(v)
    { }

    decltype(func(v_, i)) operator()(int i)
    {
        return func(v_, i);
    }
};

这可以像这样使用:

func_binder f(some_var);
f(some_i);

如果varis 没有被函数改变,那么你不需要担心线程。如果是,那么它应该被包装在一个以某种方式同步访问它的结构中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章