C++ lambda(람다 식)
C++ lambda
람다 표현식 예제:
#include <algorithm> #include <cmath> void abssort(float* x, unsigned n) { std::sort(x, x + n, // Lambda expression begins [](float a, float b) { return (std::abs(a) < std::abs(b)); } // end of lambda expression ); }
출처 : Microsoft.Doc 1. capture (AKA. Lambda-introducer) 2. parameter list.[Optional] (AKA. Lambda declarator) 3. 변경 가능한 사양[Optional] 4. exception 사양[Optional] 5. trailing-return-type[Optional] 6.Lambda body example: #include <iostream> #include <algorithm> using namespace std; int main(void) { int x = 10; double y = 5.4; auto lamb_func1 = [=]() { //x = 3; //can't access 'x' return x + y; }(); auto lamb_func2 = [&]() { x = 3; //can access 'x' return x + y; }(); #if 1 //same function auto lamb_func3 = [=, x=x+1]() { return x + y; }(); #else //same function auto lamb_func3 = [=]() { int ix = x + 1; return ix + y; }(); #endif cout << lamb_func1 << endl; cout << lamb_func2 << endl; cout << lamb_func3 << endl; return 0; } |
댓글
댓글 쓰기