私のアプリケーションで最も優先度の高い「パケット」を取得したいと考えています。パケットは、nameという名前のstd :: stringとpriorityとしての整数の2つのフィールドのみを含む基本構造です。出力優先度キューでの構造体の比較
#include <iostream>
#include <queue>
using namespace std;
typedef struct packet {
int priority;
std::string name;
friend bool operator<(const packet& a, const packet& b) {
return a.priority > b.priority;
}
}
packet;
int main() {
std::priority_queue<packet*> packets; //I must use packet* as pointer (restriction).
packet* p1 = new packet();
packet* p2 = new packet();
packet* p3 = new packet();
p1->priority = 200;
p2->priority = 20;
p3->priority = 89;
p1->name= "test";
p2->name = "test2";
p3->name = "test3";
packets.push(p1);
packets.push(p2);
packets.push(p3);
std::cout << "first: " << packets.top()->name;
packets.pop();
std::cout << "second: " << packets.top()->name;
packets.pop();
std::cout << "third: " << packets.top()->name;
packets.pop();
return 0;
}
: 最初:二TEST3:test2は第三:test1の
しかし、私は最初に最も優先度のパケットを取得したい、次のように私のコードです。この問題を解決するにはどうすればよいですか?ありがとう!あなたのstd::priority_queue
で
あなたのプライオリティキュー – PYA
[構造体のポインタのプライオリティキュー](// stackoverflow.com/a/13269561) –