12월 16, 2015

C++11 lambda expression



  • Syntex of lambda
[caps]  {
    function_contents;
};
    또는
[caps]  (params)  (mutable) (throwSpec) (->retType)   {
    function_contents;
};

    • caps: captures. 외부의 변수 값을 람다 내부에서 사용할 수 있게 함
               [=] : 람다 외부의 값을 value 형식으로 전달
               [&] : 람다 외부의 값을 reference 형식으로 전달
    • params: 람다는 일반 함수와 마찬가지로 파라미터 값을 받을 수 있는데, 이와 같이 파라미터 값을 람다 내부로 건네주는데 사용 
    • mutable : 람다에 mutable 선언시 value 로 전달된 captures를 람다 내부에서 수정할 수 있으며 수정된 값은 람다 내부에서 유지. (value로 전달 됐으므로 람다 밖에서는 수정된 값이 적용되지 않음)
    • throwSpec 
    • retType: 람다는 일반함수와 마찬가지로 값을 리턴할 수 있는데, 이 리턴값의 type을 지정하는데 사용 
    • function_contents: 람다가 수행하는 내용



  • ex)
int x = y = 1;
auto l = [=x, &y] -> bool {
    if ( ++x == ++y )
        return true;
    else
        return false;
};
// true 리턴, x는 1, y는 2 값으로 변경.
       
  • lambda의 장점


  • lambda의 한계


댓글 없음:

댓글 쓰기