2011-08-28 62 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"); 
} 

该代码是否可以在不使用Boost的情况下转换为C++?我知道C++ 0x lambda表达式语法,但没有尝试在这种情况下使用占位符。在C++中增加lambda :: _ 1 0x

回答

10

没有占位符在这种情况下需要的,因为lambda表达式拍摄参数:

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

考虑使用[]而不是[=],因为你没有捕捉任何东西。当您尝试捕获变量时,这将防止错误。 –

+0

是的。纠正。 –