我需要在c ++ 98中重写c ++ 11代码,c ++ 11使用lambda函数[&](const输出&o

-10 c++ c++98

我需要在c ++ 98中重写c ++ 11代码,c ++ 11正在使用这个lambda函数

std::for_each(m_outputs.begin(), m_outputs.end(), [&](const Output & o)
{
     process(o)
}
Run Code Online (Sandbox Code Playgroud)

使用仿函数是否容易编写完全相似的东西?

MSa*_*ers 6

无论如何,似乎毫无意义地使用了lambda:

std::for_each(m_outputs.begin(), m_outputs.end(), &process);

也就是说,lambda只是一个带有的对象operator().您始终可以手动编写基础类型,并创建实例.Lambda保存了代码行,但并不神奇.

[编辑]因为我们已经知道问题是关于捕获,所以[&]通过引用捕获变量.这意味着将一个或多个引用变量添加到您正在编写的替换类型中.