람다는 C++11에서 도입된 문법으로, 일반적인 함수와 다른 점은 이름과 소속(클래스)이 명시되지 않은 익명함수
람다식 또는 람다함수라고 부름
아래 코드는 동일한 동작을 하는 함수를 '일반 함수'와 '람다 함수'로 작성한 것
#include<iostream>
#include<string>
using namespace std;
// 일반 함수 정의
void sum1(int a, int b)
{
cout << "sum1 func : " << a + b << end;
}
int main(void) {
// 일반 함수 호출
sum1(10, 20);
// 람다 함수
[](int a, int b)
{
cout << "sum2 lambda : " << a + b << endl;
}(30, 40);
return 0;
}
실행결과
sum1 func : 30
sum2 lambda : 70
반환형 함수이름 (매개변수)
{
// 구현몸체
}
[](int a, int b){ cout << "" << endl;}(30,40);
[캡처](매개변수)->Return Type {구현몸체}(호출인자)
소괄호()는 생략 가능
다음은 람다를 이용하여 함수 객체를 생성하고 실행한 내용
void LambdaFunc()
{
// 함수 객체 생성
auto lamdaFunc = []()->void {
cout << "Lambda test" << endl;
};
// 함수 객체 실행
lamdaFunc();
}
실행결과
Lambda test
void LambdaFunc()
{
int32 sum = 10;
// 함수 객체 생성
auto lamdaFunc = [&sum](int number)->void {
sum += number;
};
// 함수 객체 실행
lamdaFunc(20);
cout << "sum : " << sum << endl;
}
실행결과
sum : 30