在C++中,priority_queue
是一個(gè)容器適配器,它提供了一種特殊的隊(duì)列,其元素可以按照優(yōu)先級進(jìn)行排序。默認(rèn)情況下,priority_queue
的元素是按照從大到小的順序排列的,但你也可以自定義比較函數(shù)來改變這種排序方式。
下面是一個(gè)使用priority_queue
實(shí)現(xiàn)優(yōu)先級排序的例子:
#include<iostream>
#include<queue>
#include<vector>
using namespace std;
// 自定義比較函數(shù),按照從小到大的順序排列
struct Compare {
bool operator()(const int &a, const int &b) {
return a > b;
}
};
int main() {
// 創(chuàng)建一個(gè)優(yōu)先級隊(duì)列,使用自定義的比較函數(shù)
priority_queue<int, vector<int>, Compare> pq;
// 向優(yōu)先級隊(duì)列中添加元素
pq.push(5);
pq.push(1);
pq.push(3);
pq.push(7);
pq.push(2);
// 從優(yōu)先級隊(duì)列中取出元素并打印
while (!pq.empty()) {
cout << pq.top() << " ";
pq.pop();
}
return 0;
}
輸出結(jié)果:
1 2 3 5 7
在這個(gè)例子中,我們首先定義了一個(gè)自定義比較函數(shù)Compare
,它使得priority_queue
中的元素按照從小到大的順序排列。然后,我們創(chuàng)建了一個(gè)priority_queue
對象,并向其中添加了一些元素。最后,我們從priority_queue
中取出元素并打印,可以看到元素已經(jīng)按照優(yōu)先級進(jìn)行了排序。