2011-08-28 11 views
5
int main() 
{ 
    std::vector<int> v; 
    v.push_back(1); 
    v.push_back(3); 
    v.push_back(2); 

    std::for_each(v.begin(), v.end(), std::cout << boost::lambda::_1 << "\n"); 
} 

¿Se puede traducir este código a C++ sin utilizar Boost? Sé la sintaxis de la expresión lambda de C++ 0x, pero no intenté usar marcadores de posición en dicho contexto.Boost lambda :: _ 1 en C++ 0x

Respuesta

10

Sin marcador de posición necesaria en este caso, como lambdas capturar el parámetro:

std::for_each(v.begin(), v.end(), [](int x){std::cout << x << "\n";}); 
+1

considerar el uso de [] en lugar de [=], ya que no está capturando cualquier cosa. Eso evitará errores más adelante cuando intente capturar variables. –

+0

cierto. Corregido –

Cuestiones relacionadas