[c++] 람다 표현식 (Lambda expressions)

C++의 람다 표현식은 익명 함수를 생성하는 간편한 방법을 제공합니다. 람다 표현식은 함수 객체의 정의 없이 함수를 사용할 수 있도록 합니다.

람다 표현식 기본 구조

람다 표현식은 다음과 같은 기본 구조를 가집니다:

[capture clause] (parameter list) -> return type {
    // 함수 본문
    // (Lambda body)
}

예를 들어, 간단한 정수 덧셈을 하는 람다 표현식은 다음과 같이 정의할 수 있습니다:

[](int a, int b) -> int {
    return a + b;
}

외부 변수 캡처

람다 표현식은 외부 변수를 캡처하여 사용할 수 있습니다. 캡처 방법에는 다음과 같은 종류가 있습니다:

int a = 5;
int b = 10;
auto lambda = [a, &b] {
    return a + b;
};

위의 예제에서, 변수 a는 값으로, 변수 b는 참조로 캡처되었습니다.

람다 표현식의 사용

람다 표현식은 주로 함수 객체를 직접 정의할 필요가 없는 간단한 작업이나 알고리즘에 유용합니다.

#include <iostream>

int main() {
    auto sum = [](int a, int b) -> int {
        return a + b;
    };

    std::cout << "Sum: " << sum(3, 4) << std::endl;
    return 0;
}

위의 예제에서는 sum 람다 표현식을 사용하여 두 정수를 더한 결과를 출력합니다.

람다 표현식은 함수 객체를 쉽게 정의할 수 있는 강력한 도구이며, C++11 이후의 표준으로 널리 사용되고 있습니다.