相关疑难解决方法(0)

在C ++中添加两个lambda函数

我正在尝试添加两个c ++ lambda函数。我的意思是:

假设您有两个函数fg每个函数都有一个或多个参数,那么说f(x,y)g(x,y)。我想将它们都添加到新的函数h中,如下所示:

h = f + g
Run Code Online (Sandbox Code Playgroud)

评估应该像这样工作:

h(x,y) = f(x,y) + g(x,y)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经尝试了以下代码,但是它不起作用。末尾的“ cin”正好可以防止控制台自动关闭。

#include <iostream>
#include <functional>

using namespace std;


function<int (int,int)> add(function<int(int, int)> g, function<int(int, int)> f)
{
    return [&](int x, int y)->int{return g(x, y) + f(x, y); };
}


int main()
{
    int i = 0;

    function<int (int,int)> sum = [](int x, int y)->int { return x + y; };
    function<int (int,int)> mul = [](int x, …
Run Code Online (Sandbox Code Playgroud)

c++ lambda functional-programming function visual-studio-2013

14
推荐指数
1
解决办法
853
查看次数

Lambda和通过引用局部变量捕获:在范围之后访问

我通过引用两个lambda传递我的局部变量.我在函数范围之外调用这些lambdas.这是undefined吗?

std::pair<std::function<int()>, std::function<int()>> addSome() {
    int a = 0, b = 0;
    return std::make_pair([&a,&b] {
        ++a; ++b;
        return a+b;
        }, [&a, &b] {
            return a;
        });
}

int main() {
    auto f = addSome();
    std::cout << f.first() << " " << f.second();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,如果不是,则一个lambda中的变化不会反映在其他lambda中.

我是否误解了lambda的背景中的传递?

我正在写变量,它似乎工作正常,输出没有运行时错误

2 0.如果它工作,那么我会期望输出2 1.

c++ lambda local c++11

12
推荐指数
2
解决办法
1万
查看次数