2013-04-17 4 views
0

여기에 질문이 있습니다. 내가 구조체 정의했습니다 :VC 6.0에서 구조 배열을 정렬하는 방법

typedef struct { 

     long t; 
     long M; 
     long double coeff; 
} Info; 

을하고 난 단지 다음과 같은 프로그램에서 구조의 수를 알 수 있고, 따라서 나는 썼다는 sizeof P = (정보)의 malloc (

정보 (정보) * 합계); (합계는 긴 정수입니다)

이제 구조 배열을 'coeff'에 따라 오름차순으로 정렬하려고합니다.

VC++ 6.0에서 어떻게 구현할 수 있습니까?

감사합니다.

+0

을 VC++ 6은 오래되었지만 여전히'std :: sort'라고 생각합니다. –

+3

C++보다 훨씬 더 많이 보입니다. –

답변

2

비교 함수를 구현 한 다음 std :: sort를 호출 할 수 있습니다.

bool comparator(const Info& p1, const Info& p2) 
{ 
    return p1.coeff < p2.coeff; 
} 

는 또한 독립형 비교 함수를 작성하는 대신 구조체 정의에서 < 연산자를 오버로드 할 수 있습니다.

다음 표준 전화 : 일종의

std::sort(A, A+sum, comparator); 

A이 구조체의 배열이라고 가정합니다. 적절한 비교 펑와

+0

감사합니다! 도움이됩니다! –

2
std::sort

사용 :

bool cmp(const Info& lhs, const Info& rhs) 
{ 
    return lhs.coeff < rhs.coeff; 
} 

다음

#include <algorithm> 

std::sort(p, p + sum, cmp); 

p이 가정은 sumInfo 개체를 포함하는 어레이의 첫 번째 요소에 대한 포인터이다.

하지만 C에서 당신은 일반적으로 동적으로 할당 된 배열을 통해 std::vector 선호 ++ :

std::vector<Info> v(sum); // contains sum default constructed Infos 

다음

std::sort(v.begin(), v.end(), cmp); 

당신은 어느 typedef 구문을 필요가 없습니다

struct Info { 
    long t; 
    long M; 
    long double coeff; 
}; 
+0

고마워요! 나는 아직도 C++에 익숙하지 않다. 벡터를 내게 소개 해줘서 고마워. –