C++ 람다 함수
1. 개요
1.1 문서 개요
이 문서는 C++의 람다 함수(lambda function)에 관해 기록하는 문서입니다. 람다 함수는 함수 객체를 간결하게 정의하는 방법으로, 주로 STL과의 조합에서 활용도가 높습니다.
2. 내용
2.1 람다 함수의 기본 구조
2.1.1 기본 문법
[capture](parameter) -> return_type {
// 함수 본문
};
2.1.2 예제
auto add = [](int a, int b) -> int { return a + b; };
int result = add(3, 4); // 결과: 7
2.2 캡처 목록
2.2.1 값/참조 캡처
[=]
: 외부 변수를 값으로 캡처[&]
: 외부 변수를 참조로 캡처[x]
: 변수 x만 캡처[=, &y]
: 전체는 값, y는 참조 캡처
2.3 STL과의 활용
2.3.1 std::for_each 예시
#include <vector>
#include <algorithm>
std::vector<int> v = {1, 2, 3, 4};
std::for_each(v.begin(), v.end(), [](int n) {
std::cout << n << " ";
});
2.4 고급 기능
2.4.1 람다 내부에서 mutable 사용
int x = 10;
auto f = [=]() mutable { x++; }; // 내부에서는 x가 변경 가능
2.4.2 반환형 생략
반환형이 명확할 경우 -> return_type
생략 가능
3. 마무리
C++ 람다 함수는 함수 객체를 간단히 표현하고, 지역 변수 캡처 및 STL 알고리즘과의 통합을 용이하게 합니다. 다양한 캡처 방식과 반환형 제어, mutable 등의 고급 기능을 통해 유연한 함수 정의가 가능하며, 함수 포인터 대체와 클로저 형태 구현에 적합한 기능입니다.