C++11 lambda

람다는 필요한 자리에서 바로 만든다

별도 클래스나 전역 함수를 만들지 않고도 정렬 기준, 탐색 조건, 변환 로직을 STL 알고리즘 인자로 전달할 수 있습니다.

[캡처](매개변수) -> 반환타입 {
  함수 본문
}

[캡처]

람다 밖의 변수를 본문에서 쓸지 정합니다. [x]는 복사, [&x]는 원본 참조입니다.

(매개변수)

일반 함수처럼 호출 시 받을 값을 적습니다. 예제의 정렬 람다는 Person 두 개를 받습니다.

-> 반환타입

대부분 생략하고 컴파일러 추론에 맡깁니다. 명확히 써야 할 때만 붙입니다.

{ 함수 본문 }

return p1.age < p2.age처럼 한 번 쓸 짧은 동작을 가까운 곳에 둡니다.

auto가 필요한 이유: 람다의 실제 타입은 컴파일러가 만든 고유한 이름 없는 타입이므로, 변수에 담을 때 보통 auto로 받습니다.