不要使用指针,也不要使用智能指针,写一个动物类,动物有属性:名字,身高,体重,年龄,将此类放到vector容器中,并对动物的体重进行排序,打印输出各个动物的体重,打印输出体重最重的动物, 最后使用析构函数释放内存
时间: 2024-03-03 10:50:32 浏览: 217
正确释放Vector的内存
好的,以下是不使用指针和智能指针的代码实现:
```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){} // 构造函数
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容器中,程序结束时会自动调用vector容器的析构函数来释放内存。
阅读全文