본문 바로가기
IT/C++(CPP)

CPP 초급 강좌 17. C++ 람다표현식 lambda expression

by 신림83 2020. 10. 27.
반응형

CPP 초급 강좌 17. C++ 람다표현식 lambda expression

람다 표현식 lambda expression 을 봅시다.

아래 예제를 봅시다.

int f1(int a) {return a + a;}

int main()
{
	[](int a) { return a + a; }; //a.
	[](int a) { return a + a; }(1); //b.
}

int f1(int a) {return a + a;} 함수를 람다를 통해 표현한다고 합시다. 반환형과 이름 int f1 -> [] 교체합니다.

그럼 a의 형태가 되는데 함수표현은 이것이 끝입니다.

호출하고 싶으면 뒤(인자)로 호출하시면 됩니다. b와 같은 형태로 적어주시면 해당 람다함수가 호출까지 됩니다.

 

일반적인 함수는 글로벌 스페이스에 만들고 함수 이름을 호출하여 사용하지만, 람다표현식은 코드 안에서 이름 없는 함수를 제작하여 사용합니다.

 

익명의 함수(anonymous function), 함수 리터럴(literal) 등이라고도 불립니다.

 

[] 라는 표현은 lambda introducer 이라고 부르며 람다 표현식의 시작을 뜻합니다.

 

다음 코드를 봅시다.

 

sort 기능을 통한 테스트

#include <algorithm>
#include <iostream>
using namespace std;

int main()
{
	int arr[7] = { 1,22,33,4,5,6,7 };

	sort(arr, arr + 7);

	for (auto n : arr)
	{
		cout << n << endl;
	}
}

간단한 sort 코드입니다. sort 함수의 3번째 인자로 비교 함수를 전달할 수 있습니다. 이와 같은 경우 람다를 쓰면 굳이 외부에 함수를 제작할 필요 없이 내부 함수 제작으로 간편하게 코딩할 수 있습니다.

 

int main()
{
	int arr[7] = { 1,22,33,4,5,6,7 };

	sort(arr, arr + 7, 
		[](int a, int b) {return a > b;} //비교함수를 람다로 넣어줌
	);

	for (auto n : arr)
	{
		cout << n << endl;
	}
}

람다를 사용하여 비교함수를 넣어줬습니다. 역 소트를 해보았습니다. 

 

필요에 따라 쉽게 사용할 수 있습니다.

배우고 익히자!

봐주셔서 감사합니다.

 

반응형

댓글