참고 블로그

C++ Lambda 사용 이유와 사용 방법

쓰는 이유

문법 : [ ] ( ) ->return { }

기본형태는 다음과 같다.

[capture] (params) ->return {body}

람다 표현식은 하나의 객체이므로 아래와 같이 auto로 선언할 수 있다.

auto f1 = [](int a, int b) { return a + b; };

[ ] : Capture

외부 변수를 람다식 내부에서 사용하고 싶을 때 이용하는 부분이다.

[=] : 모든 외부변수 복사

외부 변수의 값을 그대로 복사해서 사용할 수 있다.

auto f1 = [=]() {
        int cp_x = x;
        double cp_y = y;
        string cp_s = s;
        return x + y;
}();
cout << "f1 = " << f1 << '\\n';
f1 = 15.4

[=, ...] : 모든 외부변수 복사, 새로운 변수생성

다음 코드를 보자.