lambda, 람다 표현식 / 람다 함수.
*이름이 없어서 익명 함수라고도 불린다. 코드를 깔끔하게 만들 수 있다.
[캡처 블록] (매개변수) -> 리턴 타입 { 본문 }
캡처 블록(생략 가능)
: 스코프에 있는 변수를 캡처하는 방식을 지정, 본문에서 그 변수에 접근할 수 있게 만든다.
[&] _ 외부의 모든 변수들을 레퍼런스 형태로 캡처
[&var] _ 외부에 정의되어 있는 변수를 레퍼런스 형태로 캡처
[=] _ 외부의 모든 변수를 복사한 값으로 캡처
[=var] _ 외부의 정의되어 있는 변수를 복사한 값으로 캡처
[this] _ 현제 객체를 캡처
[*this] _ 현제 객체의 복사본을 캡처
매개변수(생략 가능)
: 람다 표현식에 대한 매개변수 록록.
리턴 타입(생략 가능)
: 람다 표현식의 리턴 타입을 지정한다. 생략하면 컴파일러가 추론한다.
본문
: 람다 표현식의 함수 몸통.
basic
auto basicLambda = []() -> void {
cout << "basicLambda function" << endl;
};
basicLambda(); // "basicLambda function"
parameter & return
auto paramLambda = [](int a, int b) -> int {
return a + b;
};
cout << "paramLambda = " << paramLambda(1, 2) << endl; // "paramLambda = 3"
capturting
int a = 100;
int b = 10;
auto capturingLambda = [a, &b](int c) -> void {
cout << "capturingLambda a = " << a << endl;
b *= c;
cout << "capturingLambda b = " << b << endl;
};
capturingLambda(2); // "capturingLambda a = 100 capturingLambda b = 20"
'::public > C++' 카테고리의 다른 글
const 위치에 따른 의미 (0) | 2023.07.05 |
---|---|
*개념을 항상 생각하고 정리하자! (0) | 2023.06.22 |
(C++11) std::move (0) | 2023.01.31 |
(C++11) alignas (0) | 2023.01.18 |
byte padding(바이트 패딩) (0) | 2023.01.18 |