[c++] 람다 표현식 (Lambda expressions)
C++의 람다 표현식은 익명 함수를 생성하는 간편한 방법을 제공합니다. 람다 표현식은 함수 객체의 정의 없이 함수를 사용할 수 있도록 합니다.
람다 표현식 기본 구조
람다 표현식은 다음과 같은 기본 구조를 가집니다:
[capture clause] (parameter list) -> return type {
// 함수 본문
// (Lambda body)
}
- capture clause: 외부 변수에 대한 액세스 권한을 정의합니다.
[ ]
안에 캡처할 변수를 지정합니다. - parameter list: 람다 함수의 매개변수 목록을 정의합니다.
- return type: 반환 유형을 나타냅니다.
- Lambda body: 함수의 본문을 정의합니다.
예를 들어, 간단한 정수 덧셈을 하는 람다 표현식은 다음과 같이 정의할 수 있습니다:
[](int a, int b) -> int {
return a + b;
}
외부 변수 캡처
람다 표현식은 외부 변수를 캡처하여 사용할 수 있습니다. 캡처 방법에는 다음과 같은 종류가 있습니다:
- [=]: 모든 외부 변수를 값으로 캡처합니다.
- [&]: 모든 외부 변수를 참조로 캡처합니다.
- [x, &y]: 변수 x는 값으로, 변수 y는 참조로 캡처합니다.
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 이후의 표준으로 널리 사용되고 있습니다.