lambda - 在c++中混合每个和lambdas

标签 lambda foreach c++11

我想在 C++0x 中使用 lambda 和 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;
}

问题是我在 lambda 版本中看不到任何 cout,因为每个版本都很好地打印 x...我认为不可能将每个版本和 lambdas 混合在一起,因为 lambdas 只能代替 "函数”,并且不能充当循环体,但我不确定,所以如果有人能确认它会很酷

编译器:GCC 4.6

最佳答案

您应该在 lambda 本身上调用 operator()。

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

关于lambda - 在c++中混合每个和lambdas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5635325/

相关文章:

javascript - 在 Angularjs 中执行 foreach 循环时如何保持数组顺序

javascript - 如何使用 <c :forEach> in scripts tag on JSP page?

c++ - Visual C++ 优化选项 - 如何改进代码输出?

c++ - 简单继承案例中的模板参数推导/替换失败

multithreading - C++ 11线程更新MFC应用程序窗口。需要SendMessage(),PostMessage()吗?

c++ - Lambda 作为成员函数模板的默认参数

python - 我可以在 Python 中使用 "static"变量的匿名函数吗?

c# - 就像在 Lambda 表达式和 LINQ 中一样

c# - 使用 Entity Framework 核心构建动态查询 - 构建查询 "by steps"

javascript - Javascript foreach 异步行为问题