我有一维功能最小化器.现在我正在传递函数指针.然而,许多功能具有多个参数,其中一些参数保持固定.我已经使用像这样的仿函数实现了这个
template <class T>
minimize(T &f) {
}
Functor f(param1, param2);
minimize<Functor>(f);
Run Code Online (Sandbox Code Playgroud)
然而,仿函数定义有很多问题.Boost :: bind看起来更干净.所以我可以这样做:
minimize(boost:bind(f,_1,param1,param2))
Run Code Online (Sandbox Code Playgroud)
但是我不清楚我的minimize声明应该使用什么boost::bind.什么类型的对象是boost::bind?是否有一个简单的模式,避免仿函数的样板,但允许多参数绑定?
Ore*_*ost 17
你可以使用boost::function.我认为boost::bind确实有自己的返回类型,但这是兼容的boost::function.典型用法是为函数创建一个typedef:
typedef boost::function<bool(std::string)> MyTestFunction;
Run Code Online (Sandbox Code Playgroud)
然后你可以传递任何兼容的功能boost::bind:
bool SomeFunction(int i, std::string s) { return true; }
MyTestFunction f = boost::bind(SomeFunction, 42, _1);
f("and then call it.");
Run Code Online (Sandbox Code Playgroud)
我希望这就是你想要的.
它还可以通过将this调用指针作为第二个参数传递给方法来处理boost::bind.
| 归档时间: |
|
| 查看次数: |
13761 次 |
| 最近记录: |