C++

[C++] 람다 함수

hanseongbugi 2024. 12. 13. 14:54

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++] 람다 표현식, lambda에 대해서

안녕하세요. BlockDMask입니다. 오늘은 C++11, 14에서 추가된 lambda 표현식에 대해 알아보겠습니다. 1. 람다 표현식 2. 람다 표현식 사용 방법과 구조 3. 람다의 필요성, 사용 예제 1. C++ 람다 표현식 lambda

blockdmask.tistory.com

https://tt91.tistory.com/11

 

C++ 람다함수 간단하게 정리

최근에 보는 책이 있는데 람다함수 정리가 간단하게 잘되어있어서 따로 정리하였음 +ㅁ+가능하면 최신 컴파일러를 사용하시는 것이 좋을듯?????람다함수는 C++11부터 지원되었는데 이후 몇몇 부

tt91.tistory.com