C++현대 C++

lambda 기본

짧은 함수를 즉석에서 정의하는 C++ lambda 문법과 캡처 규칙의 기초를 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

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가 오래 살아남으면 바깥 변수 수명 문제를 만들 수 있습니다. 특히 비동기 코드와 함께 쓸 때 더 조심해야 합니다.