[英]Combining std::function objects
說我有
double xSquared( const double )
{
return x*x;
}
...
std::function<double (double)> func = &xSquared;
...
到目前為止,我使用這種結構的(更復雜的)目的很好。 現在我有一個接受上述形式的std :: function的函數,我需要創建一個擴展原始的新的std :: function:
typedef std::function<double (double)> func1D;
double someFunction( const func1D &func, const double a )
{
func1D extendedFunc = func/(x-a); // I know this is incorrect, but how would I do that?
...
}
所以數學等價物是:
f(x)=x²
g(x)= f(x)/(xa)
我怎么能做到這一點? 謝謝您的幫助!
由於您已經使用C ++ 0x,為什么不使用lambda表達式呢?
func1D divideByXMinusA(const func1D& f, double a) {
return [=](double x) { return f(x)/(x-a); };
}
編輯:使用std::bind
:
func1D divideByXMinusA_withBind(const func1D& f, double a) {
using namespace std::placeholders;
return std::bind(std::divides<double>(),
std::bind(f, _1),
std::bind(std::minus<double>(), _1, a));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.