结构数组的排序函数

Sort function for array of structures

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

我有一个名为rain的结构。它是这样定义的

 struct Rain{
    string month;
    string year;
    double rainfall;
 }

我有一个这样的数组(rain[240]),我想使用排序算法进行排序。这是我尝试过的:

sort(rain.rainfall, rain.rainfall + 240);

但是我得到:

member reference base type 'Rainfall_data [240]' is not a structure or union
    sort(rain.rainfall, rain.rainfall + 240);
         ~~~~^~~~~~~~~

我只是想知道是否有可能以这种方式使用排序算法,如果是这样的话,我做错了什么,它不工作?

谢谢你的帮助。

通常将函数嵌入到类/结构体中是最方便的:

struct Rain {
    string month;
    string year;
    double rainfall;
    bool operator < (const Rain& r1) const {
        return (rainfall < r1.rainfall);
    }
};

现在它们可以按照基本类型进行排序:

std::sort(rain, rain + 240);

您需要创建一个可以传递给sort的比较函数,该函数知道如何比较两个不同的Rain对象。

bool RainLess(const Rain &r1, const Rain &r2)
{
    return r1.rainfall < r2.rainfall;
}
std::sort(rain, rain+240, RainLess);