定义Rectangle矩形类和MyCompare类,使用compareTo 实现矩形数组中的对象按面积从小到大输出定义Rectangle矩形类和MyCompare类,实现矩形数组中的对象按面积从小到大输出。只有长宽 没高
时间: 2024-02-16 10:04:27 浏览: 61
好的,这里是使用 `compareTo` 函数实现的代码:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
// 定义矩形类
class Rectangle {
public:
Rectangle(int w, int h) : width(w), height(h) {}
int getArea() const { return width * height; }
int compareTo(const Rectangle& other) const {
if (getArea() < other.getArea()) {
return -1;
}
else if (getArea() > other.getArea()) {
return 1;
}
else {
return 0;
}
}
int width, height;
};
// 定义比较类
class MyCompare {
public:
bool operator()(const Rectangle& a, const Rectangle& b) const {
return a.compareTo(b) < 0;
}
};
int main() {
Rectangle rectArr[] = { Rectangle(2, 3), Rectangle(1, 4), Rectangle(3, 2) };
int n = sizeof(rectArr) / sizeof(Rectangle);
// 使用 sort 函数按面积排序
sort(rectArr, rectArr + n, MyCompare());
// 输出排序后的结果
for (int i = 0; i < n; i++) {
cout << "width: " << rectArr[i].width << ", height: " << rectArr[i].height << ", area: " << rectArr[i].getArea() << endl;
}
return 0;
}
```
这里我们同样定义了矩形类 `Rectangle` 和比较类 `MyCompare`。不同的是,我们使用了 `compareTo` 函数来比较两个矩形对象的大小。
在 `MyCompare` 类中,我们使用了函数对象,即重载了小于号运算符的类,作为 `sort` 函数的第三个参数。在该类中,我们调用了 `compareTo` 函数进行比较。
在 `main` 函数中,我们同样使用了 `sort` 函数来对矩形数组进行排序,但这次我们传入了 `MyCompare()` 的对象作为第三个参数。最后,我们按照格式输出了排序后的结果。
阅读全文