c++

c++优先队列怎么使用

小亿
106
2023-08-01 19:30:52
栏目: 编程语言

C++中的优先队列是一种特殊的队列,其中的元素按照一定的优先级进行排序。元素的优先级由元素自身的比较函数确定。

下面是使用C++优先队列的一般步骤:

  1. 包含头文件:#include <queue>

  2. 声明一个优先队列对象:priority_queue<data_type> pq;

  1. 添加元素到队列中:pq.push(element);

  2. 访问队列中的顶部元素:top_element = pq.top();

  1. 删除队列中的顶部元素:pq.pop();

注意事项:

以下是一个使用优先队列的例子,其中存储自定义的Book结构体,按照价格从高到低进行排序:

#include <iostream>
#include <queue>
using namespace std;
struct Book {
string title;
double price;
};
// 自定义比较函数
struct CompareBooks {
bool operator()(const Book& b1, const Book& b2) {
return b1.price < b2.price;
}
};
int main() {
priority_queue<Book, vector<Book>, CompareBooks> pq;
// 添加元素
pq.push({"Book 1", 9.99});
pq.push({"Book 2", 7.99});
pq.push({"Book 3", 12.99});
// 访问队列中的顶部元素
Book topBook = pq.top();
cout << "Top Book: " << topBook.title << ", Price: " << topBook.price << endl;
// 删除队列中的顶部元素
pq.pop();
// 访问新的顶部元素
topBook = pq.top();
cout << "Top Book: " << topBook.title << ", Price: " << topBook.price << endl;
return 0;
}

输出结果:

Top Book: Book 3, Price: 12.99
Top Book: Book 1, Price: 9.99

0
看了该问题的人还看了