728x90

람다(lambda)는 '람다 함수' 또는 '이름 없는 함수'라고 부르며, 그 성질은 함수 객체와 같다.


기존 C++에서 STL의 find_if, sort 등의 알고리즘을 사용할 때 특정 조건자를 사용하려면 함수 객체를 정의해야 했다.

그런데 STL 알고리즘 함수에서만 사용하려고 따로 함수 객체를 만들려니 귀찮을 수 밖에 없었다.

그래서 보통은 함수를 따로 만들거나, 함수를 정의하는 것도 귀찮아서 그냥 STL을 사용안하고 직접 컨테이너를 다루었다.

람다 덕택에 이제는 이런 수고를 할 필요가 없어졌다.


람다의 기본 문법은 다음과 같다.


다음은 람다의 간단한 사용 예다.


auto를 사용하면 람다를 변수에 대입 할 수도 있다.


람다는 일반 함수처럼 파라미터를 정의 할 수도 있다.


반환 값도 사용할 수 있다.


find_if를 쓸 때에는 더욱 유용한 것을 느낄 수 있다.


기존에는 다음과 같이 find_if 알고리즘을 이용해서 '죽은 유저'를 찾으려면 다음과 같이 함수 객체를 정의해야 했다. 

하지만 람다를 사용하게 되면, 한 줄로 간단하게 끝낼 수 있다.



* 람다는 'decltype' 과 'sizeof' 에서는 사용할 수 없다.

728x90

'Basic Programming > C++ 11' 카테고리의 다른 글

C++11 - nullptr  (0) 2016.02.26
C++11 - enum  (0) 2016.02.26
C++11 - range based for  (0) 2016.02.25
C++11 - 람다(lambda) 함수 - 2  (0) 2016.02.25
C++11 - auto 키워드  (0) 2015.12.08

+ Recent posts