这是问题所在。我已经定义了一个结构:
typedef struct {
long t;
long M;
long double coeff;
} Info;
我只能知道下面程序中的结构数量,因此我写道:
信息 p =(信息)malloc(sizeof(Info)* sum); (其中sum是一个长整数)
现在我想按照'coeff'按升序对结构数组进行排序。
我怎样才能在VC ++ 6.0中实现它?
非常感谢!
答案 0 :(得分:2)
您可以实现比较功能,然后调用std :: sort。
bool comparator(const Info& p1, const Info& p2)
{
return p1.coeff < p2.coeff;
}
您还可以在结构定义中重载<
运算符,而不是编写独立的比较函数。
然后调用std :: sort
std::sort(A, A+sum, comparator);
假设A
是你的结构数组。
答案 1 :(得分: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
是指向包含sum
Info
个对象的数组的第一个元素的指针。
但是在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;
};