priority_queue<T, Container, Compare> 預設 Compare = std::less<T>,文件說「小的元素往前排,大的往後排,出隊時序列尾的元素出隊」,似乎違背隊列 FIFO 直覺。
priority_queue不是隊列,而是 最大堆(預設以less使最大元素位於堆頂)。
std::vector,以 make_heap、push_heap、pop_heap 維護堆性質。top() 回傳堆頂元素(最大值),pop() 移除堆頂並重建堆。std::priority_queue pq; // less -> 最大堆
pq.push(3); pq.push(1); pq.push(4);
std::cout << pq.top(); // 4 (最大值)
pq.pop();
std::cout << pq.top(); // 3
std::priority_queue, std::greater> minPq;
// 或 C++23: std::priority_queue pq(std::greater{});
「priority_queue 是披著隊列外衣的堆;less 讓大的浮上來,greater 讓小的沉下去。」