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

Czy ten kod można przetłumaczyć na C++ bez użycia Boost? Znam składnię wyrażeń lambda C++ 0x, ale nie próbowałem używać symboli zastępczych w takim kontekście.Zwiększenie lambda :: _ 1 w C++ 0x

Odpowiedz

10

Nie potrzeba w tym przypadku zastępczym, jak lambdas uchwycić parametr:

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

rozważyć użycie [] zamiast [=], ponieważ nie są nic przechwytywanie. Pozwoli to uniknąć błędów później, gdy spróbujesz przechwycić zmienne. –

+0

Prawda. Poprawione. –