C++ 아이콘 제작자: Darius Dan - Flaticon
함수 포인터처럼 많이 사용한다.
람다 함수는 익명 함수이기 때문에 정의만 하면 그 자체로 함수 주소를 리턴하고 어떤 임의의 함수 포인터에 람다 함수를 담아 두어야 한다.매개변수가 없으면 () 생략가능, 리턴값도 컴파일이 추론만 가능한 로직이라면 생략가능
[](int a) { // 함수 내용}->
와 리턴값을 같이 생략함
auto func = []() -> void {cout << "Hello, World!\n"; };
func는 함수 포인터가 되며 정의된 이 람다 함수를 func 이름으로 실행시킬 수가 있게 된다.
“Hello World!”를 출력하는 기능을 하는 함수를 func에 담은 것. 실행은 func()로 해야 “Hello World!”이 출력된다.정의와 동시에 뒤에 ()을 붙여 실행까지 하면 이제 그 함수가 실행된다.
익명 함수이므로 정의와 실행을 동시에 하면 1 회 실행 하고 사라진다.
[]{cout << "Hi" ; }();
람다 함수 밖에 있는 데이터를 가져와서 람다 함수 내부에서 사용할 수 있는데 캡처 부분에서 어떤 데이터를 가져올지 작성한다.
- [&]
& 만 써주면 외부에 정의 되어 있는 모든 변수들을 레퍼런스 형태로 람다 함수 내부에 가져 오겠다는 의미
- [&a] 외부에 정의 되어 있는 a라는 변수를 레퍼런스 형태로 람다 함수 내부에 가져 오겠다는 의미
- [=]
= 만 써주면 외부에 정의 되어 있는 모든 변수들을 복사한 값으로 람다 함수 내부에 가져 오겠다는 의미
- [=a] 외부에 정의 되어 있는 a 라는 변수를 복사한 값으로 람다 함수 내부에 가져 오겠다는 의미
- [this]
클래스 내에서 람다 함수가 사용될 때 멤버 변수들을 람다 함수 내부에서 사용하고 싶을 때는 [this] 이런식으로 가져오기도 한다.
개인 공부 기록용 블로그입니다.
틀린 부분 있으다면 지적해주시면 감사하겠습니다!!