std::priority_queue 是容器適配器,默認大頂堆(最大元素在 top)。適用於任務調度、異步處理等需按優先級處理的場景。
vector,堆操作 push_heap/pop_heapCompare:返回 true 表示 a 優先級 低於 b(即 a 在 b 之後)a.priority > b.priority#include <iostream>
#include <queue>
#include <vector>
using namespace std;
class Task {
public:
Task(int p) : priority_(p) {}
int priority_;
void DoWork() { cout << "DoWork: " << this << " priority: " << priority_ << endl; }
};
struct PriorityCompare {
bool operator()(Task* a, Task* b) {
return a->priority_ > b->priority_; // 數值小優先級高
}
};
int main() {
priority_queue, PriorityCompare> q;
Task t1(1), t2(10), t3(3), t4(1), t5(8), t6(9);
q.push(&t1); q.push(&t2); q.push(&t3);
q.push(&t4); q.push(&t5); q.push(&t6);
while (!q.empty()) {
q.top()->DoWork();
q.pop();
}
return 0;
}
DoWork: 0x... priority: 1 DoWork: 0x... priority: 1 DoWork: 0x... priority: 3 DoWork: 0x... priority: 8 DoWork: 0x... priority: 9 DoWork: 0x... priority: 10
clear() 方法,需重新構造或循環 pop 清空掌握 priority_queue 及其比較器邏輯,是高效實現優先級調度的基礎。