람다는 간단하거나 일회성에 가까운 함수를 구현하는 경우에 자주 사용되는 익명 함수이다.
이름 없는 함수이기 때문에 람다의 구현은 가볍고 간단하게 하는 것에 중점을 두는 편이다.
기본 형식은
[ ] (int a, int b) { return a > b; };
다음과 같이 대괄호 [] 로 시작하고 괄호 안에 변수를 통해 람다 외부에서 정의된 변수나 상수를 람다 내부에서 사용할 수 있다.
소괄화 () 는 매개 변수를, 중괄화 {} 는 함수의 동작을 위한 코드를 쓰게 된다.
다음은 백준 문제 1427번 소트인사이드을 해결한 코드이다.
이 문제는 입력받은 숫자를 내림차순으로 정리하는 문제인데
sort 함수는 기본으로 오름차순으로 정렬을 하기 때문에 문제 해결을 위한 내림차순을 위해
세 번째 인자에 함수를 대입하여 사용자가 정의한 함수로 정렬을 할 수 있다.
이때 내림차순을 위한 람다 함수를 정의하여 구현하였다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
cin.tie(NULL);
ios::sync_with_stdio(false);
string str;
cin >> str;
sort(str.begin(),str.end(),
[](int a, int b)
{
return a > b;
}
);
cout << str;
return 0;
}