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

Bu kod, Boost'u kullanmadan C++'ya çevrilebilir mi? C++ 0x lambda ifadesi sözdizimini biliyorum, ancak bu bağlamda yer tutucuları kullanmaya çalışmadım. lambda'lar parametresini alabilirsiniz olarakBoost lambda :: _ 1, C++ 0x

cevap

10

bu durumda gerek yoktur tutucudur,:

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

[] yerine kullanmayı düşünün [=], bir şey yakalama olmadığı için. Bu, değişkenleri yakalamaya çalıştığınızda daha sonra hataları önleyecektir. –

+0

Doğru. Düzeltildi. –