如何在vc6.0中对结构数组进行排序

how to sort a structure array in VC 6.0

本文关键字:数组 结构 排序 vc6      更新时间:2023-10-16

问题来了。我已经定义了一个结构体:

typedef struct {
        long t;
        long M;
        long double coeff;
} Info;

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

Info p = (Info) malloc (sizeof(Info) * sum);(其中sum为长整数)

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

如何在vc++ 6.0中实现?

非常感谢!

你可以实现一个比较函数,然后调用std::sort。

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

你也可以在你的结构定义中重载<操作符,而不是编写一个独立的比较函数。

则调用std::sort

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

假设A是你的struct数组

使用合适的比较函子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;
};