Post

C++ 람다식이란?


람다는 익명함수로 크게 Capture(캡쳐), Parameter(인자), Return(리턴), Body(몸체) 로 나눌 수 있다.

아무것도 안하는 람다함수는

[] () {};

로 표현할 수 있다.


[Capture] (Parameter) {Body}


1. Capture

Capture는 람다 함수 밖에 있는 변수를 가져와 사용하고 싶을 때 사용한다.

예를들어 선언되어있는 지역변수 a를 출력하고 싶다면 이렇게 한다.


[int a](){ cout << a << endl; };


괄호안에 =, & 이 들어갈 수 있는데

= 는 모든 지역변수를 값으로 사용하겠다는 뜻이고

&는 모든 지역변수를 레퍼런스로 사용하겠다는 뜻이다.


2. Parameter

람다 함수 안에서 사용할 인자를 선언한다.

만약 지역변수와 이름이 같다면 에러를 나타낸다.

그리고 생략할 수도 있다.





명시적으로 3을 출력하고 싶다면


[](){cout<<3<<endl;}();


뒤에 ();를 붙여서 쓰면 호출이 된다.

어떤 함수에 저장해서 사용하고 싶다면 


auto func = [](){cout<<3<<endl;};

func()


();를 빼야 한다.



이것말고 더 어려운 부분도 있었는데 계속 정리해야겠다.




▲ top