不要使用指针,也不要使用智能指针,写一个动物类,动物有属性:名字,身高,体重,年龄,将此类放到vector容器中,并对动物的体重进行排序,打印输出各个动物的体重,打印输出体重最重的动物, 最后写一个析构函数释放内存
时间: 2024-03-03 17:50:34 浏览: 17
好的,以下是代码实现:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
class Animal{
public:
Animal(string n, double h, double w, int a): name(n), height(h), weight(w), age(a){} // 构造函数
~Animal(){} // 析构函数
string name;
double height;
double weight;
int age;
};
bool cmp(Animal a1, Animal a2) { // 比较函数,用于排序
return a1.weight < a2.weight;
}
int main() {
vector<Animal> animals; // 存放动物的vector容器
animals.push_back(Animal("cat", 20, 3.5, 2));
animals.push_back(Animal("dog", 30, 7.2, 4));
animals.push_back(Animal("tiger", 200, 250, 8));
animals.push_back(Animal("elephant", 300, 500, 12));
animals.push_back(Animal("lion", 120, 180, 6));
sort(animals.begin(), animals.end(), cmp); // 排序
cout << "Sorted weights:" << endl;
for (auto animal : animals) {
cout << animal.name << ": " << animal.weight << endl;
}
cout << "The heaviest animal is " << animals.back().name << endl;
return 0;
}
```
输出结果为:
```
Sorted weights:
cat: 3.5
dog: 7.2
lion: 180
tiger: 250
elephant: 500
The heaviest animal is elephant
```
注意:由于动物对象被存放在 vector 容器中,所以我们需要在 Animal 类中定义一个析构函数来释放动态分配的内存,确保程序不会出现内存泄漏等问题。在这个示例代码中,由于 Animal 类并没有动态分配内存,析构函数就是一个空函数。