写一个动物类,动物有属性:名字,身高,体重,年龄,并将此类放到vector容器中,并对动物的体重进行排序,最后打印输出各个动物的体重,以及体重最重的动物,并释放内存
时间: 2024-03-01 07:55:47 浏览: 168
语义网动物食物链的一个详细实验
好的,为您提供以下代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Animal {
public:
Animal(string n, double h, double w, int a) : name(n), height(h), weight(w), age(a) {}
string getName() const { return name; }
double getHeight() const { return height; }
double getWeight() const { return weight; }
int getAge() const { return age; }
private:
string name;
double height;
double weight;
int age;
};
bool compareWeight(const Animal& a1, const Animal& a2) {
return a1.getWeight() < a2.getWeight();
}
int main() {
vector<Animal*> animals;
animals.push_back(new Animal("cat", 1.2, 2.3, 3));
animals.push_back(new Animal("dog", 1.8, 4.5, 5));
animals.push_back(new Animal("tiger", 2.1, 150.0, 10));
animals.push_back(new Animal("lion", 1.9, 180.5, 7));
sort(animals.begin(), animals.end(), compareWeight);
for (auto& animal : animals) {
cout << animal->getName() << "'s weight is " << animal->getWeight() << endl;
}
cout << "The heaviest animal is " << animals.back()->getName() << ", with weight " << animals.back()->getWeight() << endl;
for (auto& animal : animals) {
delete animal;
}
return 0;
}
```
代码解析:
首先定义了一个Animal类,包含名字、身高、体重、年龄四个属性,构造函数中初始化这四个属性。
定义了一个compareWeight函数,用于比较两个Animal对象的体重大小,以用于sort函数中的排序。
在main函数中,定义了一个vector容器animals,将四个动物对象(cat、dog、tiger、lion)的指针放入容器中。
使用sort函数对animals容器中的动物对象进行排序,使用compareWeight函数进行体重大小比较。
使用for循环遍历animals容器中的每一个动物对象,并打印输出其名字和体重。
打印输出体重最重的动物对象的名字和体重。
遍历animals容器中的每一个动物对象,并释放其内存,最后返回0。
注意:在使用指针进行动态内存分配时,需要手动释放内存,避免内存泄漏。
阅读全文