1. lambda 표현식
- lambda는 람다 표현식, 람다 함수, 익명 함수 등으로 불림
- 람다 함수의 형태는 다음과 같다.
#include <iostream>
#include <string>
void sum1(int a, int b)
{
std::cout << "sum1 func : " << (a + b) << '\n';
}
int main()
{
sum1(10, 20); //<--- 일반 함수 호출
auto sum2 = [] (int a, int b)
{
std::cout<< "sum2 lambda : " << (a + b) << '\n';
}(10, 20); //<--- 람다 함수 호출
}
output
sum1 func : 30
sum2 func : 70
- 위 코드를 보면 람다 함수의 모양이 이상한 것을 볼 수 있다.
[captures] (parameters) -> return_types_declaration {
lambda_statements;
};
- 변수 캡쳐
- 현재 함수에서 사용할 외부 변수들
- 비어있다면 아무것도 아님
- = 을 넣으면 해당 함수의 모든 변수를 전부 사용한다는 의미
- & 를 넣으면 모든 변수를 참조형으로 받아드린다는 의미
- [=, &num] 처럼 특정변수만 참조형으로 사용하는 것도 가능
- 매개 변수
- 함수에서 받아드리는 인자
- 리턴 타입
- void 형인 경우 화살표와 함께 생략 가능
- 람다 함수는 변수를 선언하는 것과 비슷하게 함수명을 지정하여 호출할 수 있다.
auto myLambdaFunc = [captures] (parameters) -> return_types_declaration {
lambda_statements;
};
- 일반 함수에서 함수의 이름이 없어지고 동작만 있는 함수를 람다 함수라고 한다.
간단한 사용 예제
int main()
{
int a = 1;
int b = 2;
auto myLambdaFunc1 = [&] () -> int {
return a + b;
};
auto myLambdaFunc2 = [] (int c) {
std::cout << c << '\n';
};
std::cout << myLambdaFunc1() << '\n';
myLambdaFunc2();
return 0;
}
출처
https://blockdmask.tistory.com/491
'C++' 카테고리의 다른 글
[C++] Override와 final 키워드 (0) | 2024.12.13 |
---|---|
[C++] 구조적 바인딩 (0) | 2024.12.13 |
<C++> enum class (0) | 2024.04.04 |
<C++> nullptr (0) | 2024.04.03 |
<C++> static_cast (0) | 2024.04.03 |