49. C++ 람다 함수

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 등의 고급 기능을 통해 유연한 함수 정의가 가능하며, 함수 포인터 대체와 클로저 형태 구현에 적합한 기능입니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

error: Content is protected !!
위로 스크롤