C++ 的priority_queue如何遍历
时间: 2024-06-15 22:09:52 浏览: 574
C++中的priority_queue是一个优先队列容器,它按照元素的优先级进行排序。默认情况下,它使用std::less作为比较函数,即最大元素在队列的顶部。
要遍历priority_queue,可以使用以下方法:
1. 使用循环和临时队列:可以通过循环将priority_queue中的元素逐个弹出,并将其存储到一个临时队列中,然后再将元素重新插入到原始的priority_queue中。这样就可以遍历所有的元素了。
```cpp
priority_queue<int> pq;
// 添加元素到priority_queue
// 遍历priority_queue
priority_queue<int> temp;
while (!pq.empty()) {
int element = pq.top();
temp.push(element);
pq.pop();
}
while (!temp.empty()) {
int element = temp.top();
// 处理元素
temp.pop();
pq.push(element);
}
```
2. 使用引用传递:可以通过引用传递priority_queue,然后在遍历过程中修改它。这样可以直接访问priority_queue中的元素。
```cpp
priority_queue<int> pq;
// 添加元素到priority_queue
// 遍历priority_queue
while (!pq.empty()) {
int& element = pq.top();
// 处理元素
pq.pop();
}
```
3. 使用STL算法:可以将priority_queue中的元素复制到一个vector中,然后使用STL算法对vector进行遍历。
```cpp
priority_queue<int> pq;
// 添加元素到priority_queue
// 复制元素到vector
vector<int> vec(pq.size());
copy(pq.begin(), pq.end(), vec.begin());
// 遍历vector
for (const auto& element : vec) {
// 处理元素
}
```
阅读全文