優先度の高いキューでオブジェクトを順序付ける方法に関する情報が見つかりませんでした。私はこの試みた:C++のpriority_queueでオブジェクトをどのように順序付けしますか?
class Person {
...
public:
bool operator<(const Person& p) {
return age < p.age;
}
}
int main() {
priority_queue<Person*> people;
people.push(new Person("YoungMan", 21));
people.push(new Person("Grandma", 83));
people.push(new Person("TimeTraveler", -5000));
people.push(new Person("Infant", 1));
while (!people.empty()) {
cout << people.top()->name;
delete people.top();
people.pop();
}
をそして、(高齢者がより高い優先順位を取得するため、最初のキューを残す)、年齢に基づいて優先権を与えることになっていますが、それは動作しません。しかし、私はこの出力を得ています:
Infant
Grandma
TimeTraveler
YoungMan
私はこれがどのような順序であるのか分かりませんが、確かに年齢ではありません。
、それはポインタの値ではなく、年齢を使用して並べ替えます。 'priority_queue'を使い、 'new'を押してください。 –