본문 바로가기
troubleshoot of dev/C++

람다 (Lambda)의 구조

by 도비야 산책가자 2021. 6. 12.

C++11 부터 Lambda(편의상, 람다)를 사용했다.

함수에 인수로 전달되는 위치에서 클로저를 정의하는 방법이다.

 

하기는 MS docs의 이미지다.

 

람다(Lambda)의 예

  1. capture절 (lambda-introducer) : 변수 캡쳐 영역
  2. 매개 변수 목록 필드. ( 람다 선언자)
  3. edit에 대한 passable여부에 대한 필드.(mutable여부)
  4. exception 필드.
  5. retrun type 필드.
  6. 람다의 본문 영역

 

1. capture 절에 여러 형태가 들어갈 수 있으며,

[=] : = 가 들어갈 경우 해당 람다를 call한 function의 모든 변수를 사용할 수 있다.

[&] : &의 경우 참조형으로 모든 변수를 사용한다는 의미.

변수 명을 사용해 그것만 참조 하도록 가능. ([args, ...])

 

2. 받을 매개변수에 대한 타입에 대한 지정.

 

3. 캡쳐 블록에서 복사한 복제본의 경우 const type이여서 editing 할 수 없음. 이때 mutable을 붙일 경우 const 가 없는 것으로 취급됨.

 

4. throw 할 수 있는 exception 정의

 

5. retrun type 정의 영역, 생략시 컴파일러가 임의 지정

 

6. 람다의 본문.

 

위 내용으로 간단히 람다의 구조에 대해 이해할 수 있을 것이다. 

예제는 다른 블로그들에서 매우 친절하게 알려져 있으니 참고하면 좋을듯 하다.

 

Ms doc

https://docs.microsoft.com/ko-kr/cpp/cpp/lambda-expressions-in-cpp?view=msvc-160 

 

C++의 람다 식

자세한 정보: c + +의 람다 식

docs.microsoft.com

디테일한 설명이 있는 블로그

https://hwan-shell.tistory.com/84

 

C++ Lambda 사용 이유와 사용 방법

C++에는 lambda라는 문법이 존제합니다. 원래 이 lambda는 boost라는 라이브러리에서 제공하는 함수였지만 지금은 modern c++로 넘어가면서 이 기능을 기본적으로 지원하게 되었습니다. (현재 modern c++은

hwan-shell.tistory.com