#include <iostream> #include <vector> #include <algorithm> class Animal { public: Animal(std::string name, double height, double weight, int age) : m_name(name), m_height(height), m_weight(weight), m_age(age) {} std::string getName() const { return m_name; } double getHeight() const { return m_height; } double getWeight() const { return m_weight; } int getAge() const { return m_age; } private: std::string m_name; double m_height; double m_weight; int m_age; }; bool sortByWeight(const Animal &a, const Animal &b) { return a.getWeight() < b.getWeight(); } int main() { std::vector<Animal> animals; animals.push_back(Animal("Elephant", 3.0, 5000.0, 10)); animals.push_back(Animal("Lion", 1.5, 200.0, 5)); animals.push_back(Animal("Giraffe", 5.0, 800.0, 8)); animals.push_back(Animal("Hippopotamus", 1.8, 1500.0, 12)); std::sort(animals.begin(), animals.end(), sortByWeight); for (const auto &animal : animals) { std::cout << animal.getName() << " weighs " << animal.getWeight() << " kg." << std::endl; } return 0; }能给我讲讲这段代码吗?
时间: 2024-04-28 09:18:47 浏览: 148
这段代码定义了一个 Animal 类,它表示一个动物对象,包含了动物的名字、身高、体重和年龄等属性。然后,定义了 sortByWeight 函数,它是一个自定义的比较器,用来按照动物的重量进行排序。
在主函数中,我们定义了一个 vector 对象 animals,用于存储若干个动物对象。然后,我们使用 push_back() 函数向 animals 中添加了四个动物对象,它们分别是大象、狮子、长颈鹿和河马,每个动物对象包含了它的名字、身高、体重和年龄。
接下来,我们调用了 STL 中的 sort() 算法,对 animals 中的动物对象进行排序。具体来说,我们使用了 sortByWeight 函数作为排序的依据。这个函数是一个自定义的比较器,它接受两个动物对象作为参数,并返回一个 bool 值,表示它们的顺序关系。在这个例子中,我们要求按照动物的重量从小到大排序,因此 sortByWeight 函数的实现也是按照这个规则来定义的。
最后,我们使用范围 for 循环遍历 animals 中的每个动物对象,并输出它们的名字和体重到标准输出流中。这个循环也可以使用传统的 for 循环来实现,但是使用范围 for 循环可以使代码更加简洁易读。
整个程序的作用是将一个动物列表按照重量排序,并输出每个动物的名字和体重。
相关问题
#include <iostream> #include <vector> #include <algorithm> using namespace std; class Animal { public: Animal(string _name, double _height, double _weight, int _age) : name(_name), height(_height), weight(_weight), age(_age) {} string name; double height; double weight; int age; }; bool cmp(const Animal &a, const Animal &b) { return a.weight < b.weight; } int main() { vector<Animal*> vec; vec.push_back(new Animal("Elephant", 2.5, 5000, 20)); vec.push_back(new Animal("Giraffe", 5.5, 800, 10)); vec.push_back(new Animal("Lion", 1.2, 250, 8)); vec.push_back(new Animal("Panda", 1.0, 150, 6)); sort(vec.begin(), vec.end(), cmp); double maxWeight = 0; Animal* maxWeightAnimal = nullptr; for (auto animal : vec) { cout << "Animal name: " << animal->name << ", weight: " << animal->weight << endl; if (animal->weight > maxWeight) { maxWeight = animal->weight; maxWeightAnimal = animal; } } if (maxWeightAnimal) { cout << "The heaviest animal is " << maxWeightAnimal->name << ", weight: " << maxWeightAnimal->weight << endl; } for (auto animal : vec) { delete animal; } return 0; }这段代码的输出结果是什么?
这段代码的输出结果为:
```
Animal name: Panda, weight: 150
Animal name: Lion, weight: 250
Animal name: Elephant, weight: 5000
Animal name: Giraffe, weight: 800
The heaviest animal is Elephant, weight: 5000
```
首先,代码创建了一个 Animal 类,并定义了一个比较函数 cmp,用于按照动物体重升序排序。然后,代码创建了一个 vector,向其中添加了四个动物实例。接着,代码使用 sort 函数按照动物体重进行排序,并输出每个动物的名称和体重。然后,代码找到最重的动物,并输出其名称和体重。最后,代码释放动物实例的内存。
写一个动物类,动物有属性:名字,身高,体重,年龄,并将此类放到vector容器中,并对动物的体重进行排序
好的,我来写一个Animal类,并实现体重排序功能:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
class Animal {
public:
Animal(std::string name, double height, double weight, int age)
: m_name(name), m_height(height), m_weight(weight), m_age(age) {}
std::string getName() const {
return m_name;
}
double getHeight() const {
return m_height;
}
double getWeight() const {
return m_weight;
}
int getAge() const {
return m_age;
}
private:
std::string m_name;
double m_height;
double m_weight;
int m_age;
};
bool sortByWeight(const Animal &a, const Animal &b) {
return a.getWeight() < b.getWeight();
}
int main() {
std::vector<Animal> animals;
animals.push_back(Animal("Elephant", 3.0, 5000.0, 10));
animals.push_back(Animal("Lion", 1.5, 200.0, 5));
animals.push_back(Animal("Giraffe", 5.0, 800.0, 8));
animals.push_back(Animal("Hippopotamus", 1.8, 1500.0, 12));
std::sort(animals.begin(), animals.end(), sortByWeight);
for (const auto &animal : animals) {
std::cout << animal.getName() << " weighs " << animal.getWeight() << " kg." << std::endl;
}
return 0;
}
```
在这个例子中,我们创建了一个Animal类,它有四个属性:名字、身高、体重、年龄。我们还实现了一个sortByWeight函数,用于对动物的体重进行排序。在main函数中,我们创建了四个Animal对象,将它们放入vector容器中,并对它们按照体重进行排序。最后,我们遍历排序后的vector,输出每个动物的名字和体重。
运行这个程序,输出如下:
```
Lion weighs 200 kg.
Giraffe weighs 800 kg.
Hippopotamus weighs 1500 kg.
Elephant weighs 5000 kg.
```
可以看到,按照体重排序后,Lion最轻,Elephant最重。
阅读全文