상세 컨텐츠

본문 제목

C++ 람다 표현식 사용하기(2)

C++

by zmo 2024. 9. 7. 23:55

본문

오늘은 저번 글에 이어서 람다표현식의 반환형을 지정하는 방법과 STL 알고리즘에서 람다 표현식이 어떻게 활용될수 있는지 알아보고자 한다 

 

오늘 알아보기

 

1. 반환형 지정

2. STL 알고리즘과 람다 표현식의 활용


람다 표현식의 반환형 지정


람다 표현식은 반환형을 명시적으로 지정할 수 있다

반환형을 지정하지 않아도 컴파일러가 자동으로 반환형을 추론해주지만 명시적인 반환형 지정이 꼭 필요한 경우도 있을 것이다 (예를들어 반환하는 값이 조건에 따라 타입이 달라지는 경우 혹은 복잡한 타입을 가지게 되면 컴파일러가 올바른 추론을 하지 못하거나 오류가 발생할수 있다)

#include <iostream>

int main() {
    // 반환형을 명시한 람다
    auto multiply = [](int a, int b) -> int {
        return a * b;
    };
    
    std::cout << "2 * 3 = " << multiply(2, 3) << std::endl;
    
    return 0;
}

- int: 함수의 반환형을 명시적으로 지정하는 구문이다 이 경우 multiply 람다는 두 정수의 곱을 반환한다
출력은 다음과 같다

 

2 * 3 = 6


STL 알고리즘과 람다 표현식의 활용

람다 표현식은 STL 알고리즘에서 매우 유용하게 사용된다

다음의 예시를 들면 std::sort에서 커스텀 비교 함수를 람다로 쉽게 구현할 수 있는 것을 볼수 있다

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> numbers = {5, 2, 9, 1, 5, 6};
    
    // 람다 표현식을 사용한 정렬
    std::sort(numbers.begin(), numbers.end(), [](int a, int b) {
        return a < b;  // 오름차순 정렬
    });
    
    // 결과 출력
    for (int num : numbers) {
        std::cout << num << " ";
    }
    
    return 0;
}

 

std::sort: 정렬 함수에 람다 표현식을 전달하여 커스텀 비교 함수를 사용한다
출력은 다음과 같다

1 2 5 5 6 9




 

 

오늘은 짧지만 저번에 완성하지 못했던 C++의 람다 표현식에 대해 마저 알아보았다 람다 표현식을 적절하게 사용하면 컴파일러가 지원도 해주는등 여러가지로 편리하게 사용할수 있을것 같다

관련글 더보기