MFCのCArray を qsort する

CArray の GetData メソッドで中身がまるまるもらえて、しかも中身書き換えてOKなのです。

struct StructHoge
{
    int number;
};

...

CArray <StructHoge, StructHoge> arrayHoge;

...

// ソート関数
int compareHoge(void* context, const void* a1, const void* a2)
{
    StructHoge* p1 = (StructHoge*)a1;
    StructHoge* p2 = (StructHoge*)a2;

    if (p1->number != p2->number)
    {
        return p1->number - p2->number;
    }

    return 0;
}

...

// ソート
StructHoge* pHoge = arrayHoge.GetData();
qsort_s((LPVOID)pHoge, arrayHoge.GetCount(), sizeof(StructHoge), compareHoge, NULL);