반응형
람다 표현식 lambda expression
• C++11 도입
• 익명의 함수(객체) 생성
• 함수 주소가 필요한 위치에 함수 구현 자체 표기
• auto 변수에 함수처럼 사용
• 특정 상황에서 일반 함수보다 빠르다.
• 지역 변수 캡처 (capture local variable)
[예제] 람다 표현식 적용
내림 차순 정렬할 때
sort 함수에 cmp 함수를 인자로 주었다.
#include <algorithm>
// 내림 차순
bool cmp(int a, int b) { return a > b; }
int main()
{
int x[5] = { 1, 3, 5, 2, 4 };
std::sort(x, x + 5, cmp);
for (auto v : x)
{
printf("%d ", v); // 5, 4, 3, 2, 1
}
}
[ ] 기호
람다 표현식 시작을 알리는 introducer
#include <algorithm>
int main()
{
int x[5] = { 1, 3, 5, 2, 4 };
std::sort(x, x + 5,
[](int a, int b) { return a > b; });
for (auto v : x)
{
printf("%d ", v); // 5, 4, 3, 2, 1
}
}
• 후위 반환 표기법으로 return type을 명시할 수 있다.
• auto 변수에 담아서 함수처럼 사용할 수 있다.
// suffix return type
std::sort(x, x + 5,
[](int a, int b) -> bool { return a > b; });
// auto
auto add = [](int a, int b) { return a * b; };
int ret = add(2, 4);
반응형
'프로그래밍 언어 > C++' 카테고리의 다른 글
[C++] constexpr 키워드 (2) | 2025.01.26 |
---|---|
[C++] static_cast 사용 방법 및 필요성 (1) | 2025.01.26 |
[C++] const_cast 필요성 및 활용 (4) | 2025.01.22 |
[C++] reinterpret_cast 필요성 및 사용 방법 (2) | 2025.01.21 |
[C++] [STL] Vector 사용 방법 (1) | 2025.01.20 |
댓글