c++队列优先queue使用和成员函数
时间: 2024-10-01 09:06:03 浏览: 21
C++标准库中的`std::priority_queue`是一个基于堆的数据结构,它实现了优先队列的概念,即新插入的元素默认会被放置在队列顶部,保证了每次出队的是优先级最高的元素。以下是`priority_queue`的基本使用和一些重要成员函数:
1. **创建**:
```cpp
#include <queue>
std::priority_queue<int> pq; // 默认采用最大堆(大根堆),可以传递比较函数自定义排序
```
如果你想要最小堆(小根堆),可以传递`std::greater<int>`作为第三个模板参数:
```cpp
std::priority_queue<int, std::vector<int>, std::less<int>> minPQ;
```
2. **插入元素**:
```cpp
pq.push(5);
pq.push(2);
```
3. **获取并删除最高优先级元素**(顶元素):
```cpp
int topElement = pq.top(); // 获取当前优先级最高的元素
pq.pop(); // 删除并返回顶元素
```
4. **查看元素大小**:
```cpp
bool empty() const { return pq.empty(); } // 判断是否为空
size_t size() const { return pq.size(); } // 返回元素数量
```
5. **修改优先级**:
由于`priority_queue`是自动维护堆性质的,你不能直接改变元素的优先级。如果需要动态调整,你可能需要先删除元素,然后用新的优先级重新插入。
6. **成员函数举例**:
```cpp
// 示例代码
while (!pq.empty()) {
int currentPriority = pq.top();
pq.pop();
process(currentPriority); // 按优先级处理元素
}
```