定义Rectangle矩形类和MyCompare类,实现矩形数组中的对象按面积从小到大输出定义Rectangle矩形类和MyCompare类,实现矩形数组中的对象按面积从小到大输出。
时间: 2024-02-16 19:04:25 浏览: 70
好的,这是一个简单的实现:
```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; }
friend bool operator<(const Rectangle& a, const Rectangle& b) {
return a.getArea() < b.getArea();
}
private:
int width, height;
};
// 定义比较类
class MyCompare {
public:
bool operator()(const Rectangle& a, const Rectangle& b) const {
return a.getArea() < b.getArea();
}
};
int main() {
Rectangle rectArr[] = { Rectangle(2, 3), Rectangle(1, 4), Rectangle(3, 2) };
int n = sizeof(rectArr) / sizeof(Rectangle);
// 使用 sort 函数按面积排序
sort(rectArr, rectArr + n);
// 输出排序后的结果
for (int i = 0; i < n; i++) {
cout << "width: " << rectArr[i].width << ", height: " << rectArr[i].height << ", area: " << rectArr[i].getArea() << endl;
}
return 0;
}
```
这里我们定义了一个矩形类 `Rectangle`,其中包含宽和高两个成员变量,以及一个计算矩形面积的 `getArea` 函数。为了实现按面积排序,我们重载了小于号运算符,使得两个矩形对象可以比较大小。
另外,我们还定义了一个比较类 `MyCompare`,用于在 `sort` 函数中按面积排序。在这里,我们使用了函数对象,即重载了小于号运算符的类,作为 `sort` 函数的第三个参数。
阅读全文