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

Mã này có thể được dịch sang C++ mà không cần sử dụng Boost không? Tôi biết cú pháp biểu thức lambda C++ 0x, nhưng không cố gắng sử dụng trình giữ chỗ trong ngữ cảnh như vậy.Tăng lambda :: _ 1 trong C++ 0x

Trả lời

10

Không giữ chỗ cần thiết trong trường hợp này, như lambdas nắm bắt thông số:

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

Xem xét sử dụng [] thay vì [=], kể từ khi bạn không nắm bắt bất cứ điều gì. Điều đó sẽ ngăn chặn các lỗi sau này khi bạn cố gắng nắm bắt các biến. –

+0

Đúng. Đã sửa. –

Các vấn đề liên quan