본문 바로가기
프로그래밍 언어/C++

[C++] 람다 표현식 lambda expression

by 까망 하르방 2025. 1. 25.
반응형

람다 표현식 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
	}
}

 

 

📌 [C++] sort() 함수란?

 

[C++] sort() 함수란?

개발할 때나 코딩 테스트에서 많이 활용되는 정렬(Sort) 단순히 정렬된 원소를 요구하는 경우도 많지만 상황에 따라서는 정렬 기법을 응용해서 문제 접근해야 하는 경우도 많다. [C++] 에서도 이러

zoosso.tistory.com

 

 

[ ] 기호

람다 표현식 시작을 알리는 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++] Lambda expression 지역 변수 캡처

 

[C++] Lambda expression 지역 변수 캡처

람다표현식 지역 변수 캡처capture local variable  점수 배열에서 70점 이상 filter 한다고 생각해보자.#include void foo(int n){ if (n >= 70) { printf("%d ", n); }}int main(){ int score[] = { 90, 30, 60, 70, 20, 10 }; std::for_each

zoosso.tistory.com

반응형

댓글