如何在VC 6.0中对结构数组进行排序

时间:2013-04-17 16:31:07

标签: c++ arrays sorting structure vc6

这是问题所在。我已经定义了一个结构:

typedef struct {

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

我只能知道下面程序中的结构数量,因此我写道:

信息 p =(信息)malloc(sizeof(Info)* sum); (其中sum是一个长整数)

现在我想按照'coeff'按升序对结构数组进行排序。

我怎样才能在VC ++ 6.0中实现它?

非常感谢!

2 个答案:

答案 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;
};