C++ 람다 함수 설명: 언제, 왜, 어떻게 쓸까?

Bean·2025년 8월 17일

프로그래밍

목록 보기
29/46

🚀 C++ 람다 함수 완벽 정리: 언제, 왜, 어떻게 쓸까?

람다 함수(lambda function)는 짧고 간단한 함수를 코드 내에서 즉석으로 정의할 때 사용하는 문법입니다.
일반적인 함수처럼 이름을 붙이지 않고, 필요한 시점에 바로 작성해 사용할 수 있다는 점이 가장 큰 특징입니다.


📌 람다 함수의 특징

1. 익명 함수

람다는 기본적으로 이름이 없기 때문에 한 번 쓰고 버리는 용도로 많이 활용됩니다.
하지만 변수를 통해 할당하면 일반 함수처럼 재사용할 수도 있습니다.

auto square = [](int x) { return x * x; };
std::cout << square(5); // 25

2. 간결함

길게 작성할 필요 없이 짧은 연산, 한 줄짜리 처리, 콜백(Callback) 등에 자주 쓰입니다.

예를 들어 std::for_each에서 단순 출력만 한다면, 굳이 별도의 함수 선언이 필요하지 않습니다.

std::vector<int> v = {1, 2, 3, 4, 5};
std::for_each(v.begin(), v.end(), [](int n){ std::cout << n << " "; });

3. 캡처(Capture) 기능

람다의 강력한 기능 중 하나는 외부 변수를 캡처할 수 있다는 점입니다.
[] 안에 어떤 방식으로 외부 변수를 가져올지 지정할 수 있습니다.

int offset = 10;
auto func = [offset](int x) { return x + offset; };    // 값 캡처
auto funcRef = [&offset](int x) { return x + offset; }; // 참조 캡처

4. 함수 객체와 유사

람다는 사실상 **함수 객체(functor)**처럼 동작합니다.
따라서 std::function과 호환되며, STL 알고리즘(std::sort, std::for_each)과 찰떡궁합입니다.


📌 람다 함수의 주요 활용 사례

  1. 콜백 처리
    스레드 완료 후 실행할 동작이나 버튼 이벤트 핸들러 등에서 사용됩니다.
button.onClick([](){ std::cout << "Button clicked!\n"; });
  1. STL 알고리즘과 함께
    불필요하게 별도 함수를 정의하지 않아도 됩니다.
std::sort(v.begin(), v.end(), [](int a, int b){ return a > b; });
  1. 한 번 쓰고 버리는 간단한 연산
    단순 연산을 코드 근처에서 바로 정의할 수 있습니다.
auto square = [](int x) { return x * x; };
  1. 함수 포인터 대체
    불필요하게 전역 함수를 만들 필요 없이 람다로 해결 가능합니다.

📌 정리

람다는 C++에서 짧고 지역적인 함수를 작성할 때 강력한 무기입니다.
특히 콜백, STL 알고리즘, 임시 연산에 많이 활용되며, 코드의 가독성과 유지보수성을 크게 향상시킵니다.

👉 필요 이상으로 복잡해지거나 재사용이 많은 경우에는 일반 함수를 쓰는 것이 더 적절할 수 있습니다.
👉 반대로, 한 번 쓰고 버리는 작은 연산이라면 람다가 최적의 선택입니다.

profile
AI developer

0개의 댓글