기본 패턴
cpp
auto square = [](int x) { return x * x; };설명
- lambda는 이름 없는 함수 객체를 빠르게 만들 때 사용하는 현대 C++ 문법입니다.
- 알고리즘 라이브러리와 함께 쓰면 짧은 조건이나 변환 규칙을 자연스럽게 표현할 수 있습니다.
- 캡처 목록
[]은 바깥 변수를 값으로 가져올지, 참조로 가져올지 결정합니다. - 짧고 지역적인 동작을 표현할 때 특히 강력하지만, 너무 길어지면 일반 함수가 더 읽기 쉽습니다.
짧은 예제
cpp
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> values{1, 2, 3, 4, 5};
int threshold = 3;
auto count = std::count_if(values.begin(), values.end(), [threshold](int value) {
return value >= threshold;
});
std::cout << count << "\n";
}빠른 정리
| 항목 | 설명 |
|---|---|
[] | 캡처 목록 |
(params) | 매개변수 목록 |
{ ... } | 함수 본문 |
| 값 캡처 | 바깥 값을 복사해서 사용 |
| 참조 캡처 | 원본 변수에 직접 접근 |
주의할 점
참조 캡처는 편하지만 lambda가 오래 살아남으면 바깥 변수 수명 문제를 만들 수 있습니다. 특히 비동기 코드와 함께 쓸 때 더 조심해야 합니다.