我有一个叫雨的结构。它是这样的定义
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);
~~~~^~~~~~~~~
我只是想知道是否有可能以这种方式使用排序算法,如果是这样,我做错了什么它不起作用?
感谢您的帮助。
答案 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);