我正在用 C++ 编写一个程序,我想定义我的一个班级的优先级队列。我需要它通过类成员变量之一来比较对象。我使用了 operator< 重载,但我知道还有第二种方法可以实现这一目标 - 使用队列定义定义的特殊函数。哪种方式更好、更美观、更高效?以及如何编写这样的函数?
我已经这样做了:
#include <iostream>
#include <queue>
using namespace std;
class Human {
public:
string name;
int age;
Human(string name, int age);
};
Human::Human(string name, int age) : name(name), age(age) {}
bool operator<(Human a, Human b) {return a.age < b.age ? true : false;}
int main() {
Human p1("Child",5);
Human p2("Grandfather",70);
Human p3("Older son",20);
Human p4("Father",40);
Human p5("Younger son",10);
priority_queue<Human> Q;
Q.push(p1);
Q.push(p2);
Q.push(p3);
Q.push(p4);
Q.push(p5);
while(!Q.empty()) {
cout << "Name: " << Q.top().name << ", age: " << Q.top().age << endl;
Q.pop();
}
return 0;
}