我有一个一维函数最小化器。现在我正在向它传递函数指针。然而,许多函数有多个参数,其中一些参数是固定的。我已经使用像这样的函子实现了这个
template <class T>
minimize(T &f) {
}
Functor f(param1, param2);
minimize<Functor>(f);
然而函子的定义有很多繁琐的内容。 Boost::bind 看起来更干净。这样我就可以做到:
minimize(boost:bind(f,_1,param1,param2))
但是我不清楚我的minimize
声明应该像使用boost::bind
。对象是什么类型boost::bind
?是否有一个简单的模式可以避免仿函数的样板但允许多个参数绑定?
你可以只使用boost::function
。我认为boost::bind
确实有自己的返回类型,但与boost::function
。典型用途是为函数创建 typedef:
typedef boost::function<bool(std::string)> MyTestFunction;
然后你可以传递任何兼容的函数boost::bind
:
bool SomeFunction(int i, std::string s) { return true; }
MyTestFunction f = boost::bind(SomeFunction, 42, _1);
f("and then call it.");
我希望这就是你想要的。
它还可以通过传递this
作为第二个参数调用的指针boost::bind
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)