租用问题

质量为本、客户为根、勇于拼搏、务实创新

< 返回租用问题列表

c++优先队列如何使用,c++优先队列头文件

发布时间:2023-08-03 08:29:16

c++优先队列如何使用

C++中的优先队列是一种特殊的队列,其中的元素依照一定的优先级进行排序。元素的优先级由元素本身的比较函数肯定。
下面是使用C++优先队列的一般步骤:
1. 包括头文件:`#include `
2. 声明一个优先队列对象:`priority_queue pq;`
- data_type是队列中元素的类型,可以是基本数据类型或自定义数据类型。
3. 添加元素到队列中:`pq.push(element);`
4. 访问队列中的顶部元素:`top_element = pq.top();`
- top_element是队列中的最高优先级元素。
5. 删除队列中的顶部元素:`pq.pop();`
- 删除队列中的最高优先级元素,并将下一个最高优先级元素移至队列顶部。
注意事项:
- 默许情况下,优先队列按降序排列,即最大的元素位于队列的顶部。如果要按升序排列,则需要自定义比较函数。
- 如果使用自定义数据类型作为优先队列的元素,需要重载比较函数(operator< 或 operator>())。
- 优先队列可以包括重复元素。
以下是一个使用优先队列的例子,其中存储自定义的Book结构体,依照价格从高到低进行排序:
```c++
#include
#include
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, 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
```