http://www.techdays.co.kr/


마이크로소프트의 최신 기술들을 소개하고 있습니다.
네이티브 개발부터 Azure까지 총 망라하고 있습니다.

웹에서 바로 볼 수도 있고 동영상 다운로드도 가능합니다.

저는 C++0x의 "RValue Reference와 lambda 완전 이해"라는 제목으로 강연을 했습니다.
예전에 블로그 포스팅을 할 때 부족함 부분이 있다고 느껴져서 처음부터 끝까지 설명하려고 했지만
제가 아직 온라인 강연은 너무 약해서 제대로 전달 될지는 모르겠네요 ;;;;;
만약 제 강연 내용이 제대로 전달 되었다면 제가 여기에서 한 내용만 이해하시면
RValue Reference와 lambda는 거의 대부분 마스터 하셨다고 생각하셔됩니다.

다행히 조만간에 C++0x와 관련된 글을 정리해서 공개할 예정이니 동영상 강의가 많이 부족하시면
이걸로 보충하시면 될듯 합니다.^^;;;;;

http://www.techdays.co.kr/2010spring/view.asp?s3=1&b_no=8



저작자 표시
신고
by 흥배 2010.03.29 19:54

클로져 사용하기 2

 

<Code 4> 에서는(세 번째 글의 마지막 예제) 하나의 변수만을 캡쳐했지만 복수의 변수를 캡쳐하는 것도 가능할까요? 네 당연히 가능합니다.


‘[]’ 사이에 캡쳐할 변수를 선언하면 됩니다.

[ &Numb1, &Numb2 ]

 

그럼 ‘[&]’로 하면 어떻게 될까요? 이렇게 하면 람다 식을 정의한 범위 내에 있는 모든 변수를 캡쳐할 수 있습니다.


............ 나머지 글은 여기에서 보세요^^;





저작자 표시
신고
by 흥배 2009.06.24 01:09

클로져 사용하기 1

 

그럼 이제 클러져에 대해서 알아 보겠습니다.

람다를 사용할 때 람다 식 외부에 정의되어 있는 변수를 람다 식 내에서 사용한 후 결과를 그 변수에 그대로 저장하고 싶을 때가 있습니다. 이럴 때 클로져를 사용하면 됩니다.

클로져는 참조나 복사로 전달이 가능합니다. 참조를 사용하는 경우는 &을 사용하면 됩니다.

람다 표현의

  

[](파라메터) { }

에서 앞의 ‘[]’ 사이에 클로져할 변수를 기술하면 됩니다.


... 나머지 글은 여기에서 봐 주세요^^

저작자 표시
신고
by 흥배 2009.06.17 09:00

C++에서의 람다 사용 법

 

람다 사용 방법은 아래와 같습니다.

[](파라메터) { }

 

int 값에 50을 더한 후 반환하는 람다 함수 

[](int x) { return x + 50; }

 

위 방법은 반환 값의 type“x+ 50”의 값의 type으로 추정되어 반환됩니다.

만약 반환 값 type을 지정하고 싶다면

 

[](int x) -> int { return x + 50; }

라고 하면 됩니다. 그리고 참고로 반환하지 않을 것이면 반환하지 않아도 됩니다.

또한 클로져를 사용하면 “[]” 사이에 참조를 넘길 수도 있습니다.

 

그럼 람다 사용 방법을 좀 더 알기 쉽도록 여러 가지 사용 예를 보여 드리겠습니다.



....... 나머지는 여기서 봐 주세요 ^^;

저작자 표시
신고
by 흥배 2009.06.10 00:13

이번은 C++0x에서의 새로운 기능 중의 하나인 Lambda에서 대해서 설명하겠습니다.

C#이나 동적 프로그래밍 언어를 공부 하신 분들은 Lambda에 대해서 들어보셨을 것입니다.

 

람다를 잘 모르는 분들을 위해서 현재 가장 쉽게 Lambda를 접할 수 있는 C#을 통해서 Lambda 사용 예를 들어보겠습니다.

(C#을 모르고 C++만 아는 분들이라도 무리 없이 볼 수 있으니 그냥 넘어가지 마시고 봐 주세요. C# 이야기는 조금만 할께요^^)

 

 

 

C#에서의 람다 식

 

람다 식은 식과 문을 포함하여 대리자나 식 트리 형식을 만드는데 사용할 수 있는 익명함수입니다.

 

형식은 다음과 같습니다.  

입력 매개 변수 => or

 

람다 식은 주로 어떤 라이브러리의 식과 결합해서 사용할 식을 만들 때 사용합니다.

람다 식이 없다면 다른 식과 결합하기 위해서는 따로 함수를 만들어서 사용해야 되므로 거추장스러워 지는데 람다 식을 사용하면 아주 간단하게 구현할 수 있습니다.

 

< Code 1. C# - 이름 중 문자 길이가 TextLength 보다 작은 이름 >

string[] MobNames = { "Babo", "Cat", "Orge", "Tester", "CEO" };

int TextLength = 4;

           

// 람다 식 사용

var ShortNames1 = MobNames.Where(MobName => MobName.Length < TextLength);

 

// foreach 사용

List<string> ShortNames2 = new List<string>();

foreach(string MobName in MobNames)

{

     if (MobName.Length < TextLength)

     {

         ShortNames2.Add(MobName);

     }

}

 

<Code 1>을 보면 람다 식을 사용하면 한 줄로 끝나는 것을 람다 식을 사용하지 않으면 List 컨테이너를 생성하고 foreach 구문을 사용하여 이름을 하나씩 조사하여 List 컨테이너에 추가해야 되는 코드가 필요해집니다.

 

C#에서 람다 식이 가장 유용하게 사용되는 부분은 Linq 일겁니다.

만약 Linq에서 람다 식을 사용하지 않게 된다면…Linq 사용하기가 꽤 힘들어지겠죠

 

 

 

C++에서 STL 알고리즘을 사용했던 불편했던 것
..................


나머지는
여기서 봐 주세요^^

저작자 표시
신고
by 흥배 2009.06.03 15:51
| 1 |

티스토리 툴바