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 |