티스토리 뷰

Visual Studio 2012


비주얼 스튜디오 2010부터 람다 함수를 지원한다.(C++11 기준)


MFC를 사용하면서 CArray나 CStringArray를 사용하게 되었는데,


정렬 기능을 지원하지 않기에 검색한 내용을 바탕으로 작성하였다.


1. 람다 함수

    • 간단하게 표현하면 아래와 같다. 자세한건 검색으로 찾아보자.

[변수 캡쳐] (받을 인자)-> 리턴타입{함수}(넘길인자)


2. CArray 사용하기

    • 우선 CArray를 사용하기 위해선 아래와 헤더를 선언하여야한다.
// ...
#include <afxtempl.h>
// ...
    • CArray도 선언하자.
// ...
CArray<int>   arr;
// ...


3. 람다 함수를 사용하여 정렬하기


    // ...
    CArray<int> arr;
    arr.Add(10);
    arr.Add(5);
    arr.Add(7);
    arr.Add(3);
    // ...
 
    bool bAscending = true;
    // ...
 
    std::sort(
        arr.GetData(),						// position of first element
        arr.GetData() + arr.GetSize(),				// position one past the final element 
[bAscending] // lambda introducer (const int& left, const int& right) // lambda formal parameters list { return bAscending ? (left < right) : (left > right); }// lambda body ); // ...


    • 위와 같이 하게 되면 오름차순으로 정렬이 될 것이다. arr.GetCount()를 활용하여 배열의 개수를 구하고, arr.GetAt(int index)를 활용하여 값을 나열해보면 정렬 완료!
    • MFC 배열의 다른 타입들도 위의 함수를 활용하여 정렬 가능하다.(CStringArray, CUIntArray 등)


댓글