#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 14:18:47 浏览: 16
这段代码定义了一个 Animal 类,它表示一个动物对象,包含了动物的名字、身高、体重和年龄等属性。然后,定义了 sortByWeight 函数,它是一个自定义的比较器,用来按照动物的重量进行排序。
在主函数中,我们定义了一个 vector 对象 animals,用于存储若干个动物对象。然后,我们使用 push_back() 函数向 animals 中添加了四个动物对象,它们分别是大象、狮子、长颈鹿和河马,每个动物对象包含了它的名字、身高、体重和年龄。
接下来,我们调用了 STL 中的 sort() 算法,对 animals 中的动物对象进行排序。具体来说,我们使用了 sortByWeight 函数作为排序的依据。这个函数是一个自定义的比较器,它接受两个动物对象作为参数,并返回一个 bool 值,表示它们的顺序关系。在这个例子中,我们要求按照动物的重量从小到大排序,因此 sortByWeight 函数的实现也是按照这个规则来定义的。
最后,我们使用范围 for 循环遍历 animals 中的每个动物对象,并输出它们的名字和体重到标准输出流中。这个循环也可以使用传统的 for 循环来实现,但是使用范围 for 循环可以使代码更加简洁易读。
整个程序的作用是将一个动物列表按照重量排序,并输出每个动物的名字和体重。
相关问题
#include <iostream> #include <vector> #include <algorithm>
#include <iostream> 是C++中的一个头文件,它包含了输入输出流的相关函数和对象,例如cout和cin。通过包含这个头文件,我们可以在程序中使用标准输入输出流来进行输入和输出操作。
#include <vector> 是C++中的一个头文件,它定义了一个名为vector的容器类模板。vector是一个动态数组,可以存储不同类型的元素,并且可以根据需要动态调整大小。
#include <algorithm> 是C++中的一个头文件,它包含了一些常用的算法函数,例如排序、查找、替换等。通过包含这个头文件,我们可以在程序中使用这些算法函数来对容器中的元素进行操作。
#include <iostream>#include <string>#include <queue>
这是 C++ 代码中的头文件引用,分别对应了输入输出流、字符串操作和队列等数据结构的实现。这些头文件是 C++ 程序编写中常用的标准库头文件,可以提供诸如 cout、cin、string、queue 等对象和方法供程序调用使用。
下面是一个简单的使用样例,演示了如何创建一个队列并向其中添加元素:
```c++
#include <iostream>
#include <queue>
int main() {
std::queue<int> myQueue; // 定义一个整型队列
myQueue.push(1); // 向队列中添加元素
myQueue.push(2);
myQueue.push(3);
while (!myQueue.empty()) { // 输出队列中的所有元素
std::cout << myQueue.front() << std::endl;
myQueue.pop();
}
return 0;
}
```
以上代码定义了一个整型队列 myQueue,并向其中添加了三个元素。在 while 循环中,我们通过 front() 方法访问队列的首个元素,并通过 pop() 方法将其移出队列。当队列为空时,程序退出循环。运行程序后,输出结果为:
```
1
2
3
```