2013-04-17 87 views
0

這裏是問題。我已經定義了一個結構:如何在VC 6.0中對結構數組進行排序

typedef struct { 

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

和我只可以知道結構在下面的程序的數量,從而我寫道:

信息P =(信息)的malloc(的sizeof(信息)*總和); (其中sum是一個長整數)

現在我想根據'coeff'按升序對結構數組進行排序。

我怎麼能在VC++ 6.0中實現它?

非常感謝!

+0

VC++ 6是舊的,但我認爲它仍然有'std :: sort'。 –

+3

這看起來比C++更像C語言。 –

回答

2

你可以實現一個比較函數,然後調用std :: sort。

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

您也可以重載<運營商在你的結構定義,而不是寫一個獨立的比較功能。

然後調用的std ::排序

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++,謝謝你介紹我的向量。 –