在c+中混合每个和lambdas+;

在c+中混合每个和lambdas+;,lambda,foreach,c++11,Lambda,Foreach,C++11,我想在C++0x中使用lambdas和for each(基于范围的for循环,而不是STL for_each)。所以我去了wiki并尝试使用lambdas重写wiki中的示例: std::vector<int> some_list; some_list.push_back(42); some_list.push_back(37); int total = 0; int value = 5; for(int& x:some_list) { [](int x)

我想在C++0x中使用lambdas和for each(基于范围的for循环,而不是STL for_each)。所以我去了wiki并尝试使用lambdas重写wiki中的示例:

    std::vector<int> some_list;
some_list.push_back(42);
some_list.push_back(37);
int total = 0;
int value = 5;
for(int& x:some_list)
{
    [](int x)
    {
        cout << "xL=" <<x <<endl;
    };
}

for(auto x:some_list)
    cout<< "x="<<x<<endl;

    return result;
}
std::vector some_list;
一些列表。向后推(42);
一些列表。向后推(37);
int-total=0;
int值=5;
for(int&x:一些列表)
{
[](int x)
{
cout在第一个“
for
”中,您只创建lambda函数,不调用它

实际上lambda函数在这里似乎没有什么用处-您可以编写代码。但是如果您仍然想使用lambda,请在“
}
”之后添加“
()


它在另一种情况下很有用-当使用
std::for_each
时。

您应该对lambda本身调用operator()

for(int& x:some_list)
{
    [](int x)
    {
        cout << "xL=" <<x <<endl;
    }(x);  //notice the "()"
}
for(int&x:some_列表)
{
[](int x)
{

cout您正在为
循环使用一个常规的
,它不需要lambda。大括号只是一个代码块,所以您要做的是为每个迭代定义lambda,而不是调用它


您要做的是使用
std::for_each

Tnx,但它仍然没有编译…错误:调用((main(int,char**)::)())不匹配:注意:候选对象被早期的错误弄糊涂了,退出这个lambda需要调用一个参数。酷,Tnx,这是“噢,doh”之一当有人告诉你怎么做,但你自己永远也弄不明白。这有什么意义?你最好在里面再加一个嵌套的lambda。
[](int x){[](int x){请给我们完整的源代码。