c++ 优先队列遍历
时间: 2023-08-28 22:16:55 浏览: 72
在C++中,优先队列是一种特殊的数据结构,它类似于队列,但是每次取出元素时都会返回当前队列中的最大(或最小)元素。优先队列通常使用堆来实现。
要遍历优先队列,可以使用以下方法:
1. 使用循环和临时变量:可以通过循环从优先队列中依次取出元素,并将其存储在临时变量中进行操作。具体示例代码如下:
```cpp
priority_queue<int> pq; // 创建优先队列
// 添加元素到优先队列
pq.push(5);
pq.push(2);
pq.push(7);
// 遍历优先队列
while (!pq.empty()) {
int element = pq.top(); // 获取当前最大元素
pq.pop(); // 移除当前最大元素
// 在这里进行对元素的操作,比如输出
cout << element << " ";
}
```
输出结果为:7 5 2
2. 使用范围-based for 循环(C++11):从C++11开始,可以使用范围-based for 循环直接遍历优先队列中的元素。具体示例代码如下:
```cpp
priority_queue<int> pq; // 创建优先队列
// 添加元素到优先队列
pq.push(5);
pq.push(2);
pq.push(7);
// 遍历优先队列
for (int element : pq) {
// 在这里进行对元素的操作,比如输出
cout << element << " ";
}
```
输出结果为:7 5 2
无论使用哪种方法,遍历优先队列的时间复杂度都是O(nlogn),其中n是优先队列中的元素个数。请注意,遍历优先队列会改变它的内部结构,因为每次取出元素后,队列会自动调整以维持最大(或最小)元素在队首。