이전게시판/C, C++
C++ 11 람다식(Lamda)이란 - 1
ㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇ
2016. 6. 19. 22:13
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()
();를 빼야 한다.
이것말고 더 어려운 부분도 있었는데 계속 정리해야겠다.