priority_queue简单使用例子
时间: 2023-07-08 21:38:55 浏览: 54
下面是一个简单的使用 C++ STL 中的 priority_queue 的例子:
```c++
#include <iostream>
#include <queue>
using namespace std;
int main() {
priority_queue<int> pq;
pq.push(10);
pq.push(30);
pq.push(20);
while (!pq.empty()) {
cout << pq.top() << " ";
pq.pop();
}
return 0;
}
```
输出结果为:
```
30 20 10
```
在这个例子中,我们创建了一个 `priority_queue` 对象 `pq`,并使用 `push()` 方法添加了三个整数到队列中。然后,我们使用 `while` 循环遍历队列中的元素,每次输出队列中的最大值(默认情况下,`priority_queue` 是一个最大堆),并使用 `pop()` 方法弹出最大值,直到队列为空。
相关问题
priority_queue的使用例子
当然,我可以给你一个priority_queue的使用例子。priority_queue是C++标准库中的一个容器适配器,它基于堆数据结构实现。它允许你按照特定的优先级顺序访问元素,具有最高优先级的元素总是位于队列的前面。
下面是一个简单的例子,展示了如何使用priority_queue:
```cpp
#include <iostream>
#include <queue>
int main() {
// 创建一个存储整数的优先队列,默认按照降序排序
std::priority_queue<int> pq;
// 插入元素
pq.push(30);
pq.push(10);
pq.push(50);
pq.push(20);
// 访问队列中的元素(注意,这里并不是按照插入顺序访问)
while (!pq.empty()) {
std::cout << pq.top() << " "; // 输出队列中最高优先级的元素
pq.pop(); // 移除队列中最高优先级的元素
}
return 0;
}
```
输出将会是:50 30 20 10,因为priority_queue默认以降序排序。
希望这个例子能够帮助你理解priority_queue的使用方法。如果还有其他问题,请随时提问。
举几个使用 priority_queue的代码例子
以下是三个使用 priority_queue 的代码例子:
1. 求一组数中的前 k 大元素
```c++
int main() {
int n = 10, k = 3;
vector<int> nums = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};
priority_queue<int, vector<int>, greater<int>> pq;
for (int i = 0; i < n; i++) {
pq.push(nums[i]);
if (pq.size() > k) pq.pop();
}
while (!pq.empty()) {
cout << pq.top() << " ";
pq.pop();
}
return 0;
}
```
2. 最小的 k 个数
```c++
int main() {
int n = 10, k = 3;
vector<int> nums = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};
priority_queue<int> pq;
for (int i = 0; i < n; i++) {
pq.push(nums[i]);
if (pq.size() > k) pq.pop();
}
while (!pq.empty()) {
cout << pq.top() << " ";
pq.pop();
}
return 0;
}
```
3. 利用优先队列实现堆排序
```c++
void heap_sort(vector<int>& nums) {
int n = nums.size();
priority_queue<int, vector<int>, greater<int>> pq;
for (int i = 0; i < n; i++) {
pq.push(nums[i]);
}
int i = 0;
while (!pq.empty()) {
nums[i++] = pq.top();
pq.pop();
}
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)