簡體   English   中英

組合std :: function對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM