Home 람다(Lambda) 기초와 사용법
Post
Cancel

람다(Lambda) 기초와 사용법

모던 C++에서 도입된 람다식(Lambda Expressions)에 대해 간단히 알아보는 글입니다.

람다란

  • 이름이 없는 함수 Object
  • nested(내포되는) 함수

형태

1
2
3
4
[<captures>](<parameters>) <specifiers> -> <return_type>
{
  <body>
};

캡처 블록(Captures)

캡처 블록: 람다 식을 품는 범위(scope) 안에 있는 변수를 람다 식에 넘겨줄 때 사용

  • 캡처의 종류(외부 변수에 대해): 값(=), 참조(&) / 특정 변수만 캡처 가능

매개 변수 목록(Parameters)

매개변수 목록: 생략 가능(권장하지 않음)

지정자(specifiers)

지정자: mutable(값에 의해 캡처된 개체를 수정할 수 있게 함. 원본은 수정하지 않음)

반환형(Return Type)

명시하지 않으면 컴파일러가 유추해서 지정해줌(권장하지 않음)

람다 식의 장점/단점

  • 장점
    • 간단한 함수를 빠르게 작성할 수 있음
  • 단점
    • 디버깅하기 힘들어짐(함수 콜 스택에서 보기 힘듬, 해결될 문제)
    • 함수 재사용성이 낮음 -> 중복 코드 발생 가능성

언제 쓰는게 좋은가

  1. 기본은 이름 있는 함수를 작성/사용
  2. 아주 작은 함수는 람다로 써도 괜찮음. 근데 재사용 가능성이 보이면 이름있는 함수로 작성하기
  3. STL 컨테이너에 매개 변수로 전달할 함수들이 람다로 만들 수 있는 좋은 후보
This post is licensed under CC BY 4.0 by the author.

C++ lvalue와 rvalue 같은 value 카테고리에 대해

템플릿 메타 프로그래밍과 constexpr 간단 비교