6
C++에서 CArray를 정렬하는 기본 제공 방법이 있습니까?사용자 정의 유형의 CArray를 어떻게 정렬합니까?
C++에서 CArray를 정렬하는 기본 제공 방법이 있습니까?사용자 정의 유형의 CArray를 어떻게 정렬합니까?
std::sort()
작동합니다 :
CArray<int> arrayOfInts;
arrayOfInts.Add(7);
arrayOfInts.Add(114);
arrayOfInts.Add(3);
std::sort(arrayOfInts.GetData(), arrayOfInts.GetData()+arrayOfInts.GetSize());
이것은 시작 반복자와 같은 배열의 첫 번째 요소에 대한 포인터, 마지막 반복자와 마지막 요소 지난 1 포인터를 사용합니다 (어쨌든 역 참조하면 안됩니다 , 그래서 모두 잘). 당신은 배열이 더 흥미로운 데이터가 포함 된 경우에도 사용자 정의 술어에 전달할 수 :
struct Foo
{
int val;
double priority;
};
bool FooPred(const Foo& first, const Foo& second)
{
if (first.val < second.val)
return true;
if (first.val > second.val)
return false;
return first.priority < second.priority;
}
//...
CArray<Foo> bar;
std::sort(bar.GetData(), bar.GetData()+bar.GetSize(), FooPred);
아를 - 그리고 CArray
을 사용하지 마십시오.
MSDN을 탐색해도 CArray가 데이터를 연속적으로 저장한다는 보장이 없습니다. 나는 기대하지만 ... std :: vector는 처음에이 결함을 가지고 있었고 발견되었을 때 표준이 수정되었습니다. –
여기를 참조하십시오 : http://msdn.microsoft.com/en-us/library/yzsdcs85(VS.80).aspx (또는 단지 afxtempl.h의 소스를 읽으십시오). MFC는 해킹 컬렉션만큼이나 표준이 아닙니다. – Shog9
고마워요, 그걸 보지 못했습니다! –