想象一下运行时func
需要的函数var
。是否可以在 C++ 下func
不var
作为参数调用?也就是说,有这样的事情
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);
如果var
is 没有被函数改变,那么你不需要担心线程。如果是,那么它应该被包装在一个以某种方式同步访问它的结构中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句