기본 모양과 사용법
- [캡쳐] ( 매개변수) {함수 동작} (호출 인자)
[]{cout<<"인자 없음"<<endl;}; //매개변수 없는 람다
[](int a, int b,int c) {cout<<a<<b<<c<<endl;}; // 매개변수 있는 람다
[]{return 200;}; // 매개변수 없고 반환 있는 람다
[](int a, int b){return a*b}; //매개변수 있고 반환 있는 람다
람다 캡처 사용법
- 외부에 정의되어있는 변수나 상수를 람다 내부에서 사용하기 위해 사용
- call by value 또는 call by reference로 가져올 수 있음
[result1, result2] () {} () // 변수 result1, result2를 복사해서 람다 함수 내부에서 사용
[&result1, &result2] () {} () // 변수 result1, result2 를 참조해서 람다 함수 내부에서 사용
[result3, &result4] () {} () // 변수 result3은 복사 result4는 참조해서 람다 함수 내부에서 사용
[=] () {} () // 모든 외부 변수 result1, result2, result3, result4를 복사해서 람다 함수 내부에서 사용
[&] () {} () // 모든 외부 변수 result1, result2, result3, result4 를 참조해서 람다 함수 내부에서 사용
[&, result3] () {} () // 모든 외부 변수 (result1,2,4)은 참조로 사용하지만, result3만 복사로 사용
[=, &result3] () {} () // 모든 외부 변수 (result1,2,4)은 복사로 사용하지만, result3만 참조로 사용
람다와 auto
- 람다 함수의 정의를 auto를 이용해서 특정 변수에 넣어둘 수 있음
- ex. auto func1 = [](int a, int b){return a*b};