对结构数组的排序函数

时间:2016-10-19 18:57:07

标签: c++ arrays sorting structure

我有一个叫雨的结构。它是这样的定义

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

我有一个这样的数组(下雨[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);
         ~~~~^~~~~~~~~

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

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

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

现在可以像基本类型一样对它们进行排序:

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

答案 1 :(得分:1)

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

bool RainLess(const Rain &r1, const Rain &r2)
{
    return r1.rainfall < r2.rainfall;
}

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