본문 바로가기

C++/기본 문법

C++ 람다식

람다의 구성(출처 : 씹어먹는 C++)

- [] 캡쳐 블록 (사용시 외부 변수를 캡쳐해 람다 몸통에서 사용 가능)

- () 전달 인자 (받는 인자가 없을때 생략 가능)

- -> 반환 타입(return 타입이 void일 경우 생략 가능)

- {} 함수 몸통

 

임시적인 클로저 객체가 생성됨

()를 통해 임시적인 클로저 객체를 실행시킴

 

* [] 캡쳐 블록
람다 안에서 람다 밖에 있는 변수들에게 접근하고 싶을때(람다 바깥에 변수에 접근하고 싶다면 캡쳐하고 사용해야함)

  1. [&]() { /* */ } 외부의 모든 변수들을 레퍼런스로 가져온다. (함수의 Call - by - reference 를 생각)
  2. [=]() { /* */ } 외부의 모든 변수들을 값으로 가져온다. (함수의 Call - by - value 를 생각)
  3. [=, &x, &y] { /* */ }, 혹은 [&, x, y] { /* */ } 외부의 모든 변수들을 값/레퍼런스로 가져오되, x  y 만 레퍼런스/값으로 가져온다
  4. [x, &y, &z] { /* */ } 지정한 변수들을 지정한 바에 따라 가져온다.

 

본문 내용 출처 :

https://modoocode.com/196

 

씹어먹는 C++ 토막글 ② - 람다(lambda) 함수

 

modoocode.com

 

'C++ > 기본 문법' 카테고리의 다른 글

<C++> sort  (0) 2022.04.12
<C++> pair 와 tuple  (0) 2022.04.12
변수(Variable)  (0) 2021.08.31
namespace  (0) 2021.08.31
iostream  (0) 2021.08.31