C++中可以使用std::priority_queue
來實現優先隊列。std::priority_queue
是一個模板類,位于<queue>
頭文件中。
使用std::priority_queue
時,需要先定義元素的類型,以及元素的比較方式。比較方式可以通過定義一個函數對象或者使用Lambda表達式來實現。
以下是一個使用std::priority_queue
實現優先隊列的示例:
#include <iostream>
#include <queue>
int main() {
// 定義元素類型為整數,比較方式為從大到小
std::priority_queue<int, std::vector<int>, std::greater<int>> pq;
// 插入元素
pq.push(3);
pq.push(1);
pq.push(4);
pq.push(1);
pq.push(5);
// 輸出隊列中的元素
while (!pq.empty()) {
std::cout << pq.top() << " ";
pq.pop();
}
return 0;
}
輸出結果為:1 1 3 4 5
在上述示例中,我們定義了一個優先隊列pq
,元素類型為整數,比較方式為從大到小。通過push
函數向隊列中插入元素,通過top
函數獲取隊列中的最高優先級元素,通過pop
函數彈出隊列中的最高優先級元素。最終,我們通過循環輸出隊列中的元素。
需要注意的是,std::priority_queue
默認使用的是std::less
作為比較方式,即從大到小的順序。如果需要從小到大的順序,可以使用std::greater
作為比較方式。