查找相关资料,使用priority_queue<int>与priority_queue<int,vector<int>,greater<int> >,自行设计输入样例,提供运行截图并说明两者的不同。
时间: 2023-07-19 20:48:19 浏览: 171
`priority_queue`是STL中的一个容器,它提供了一种基于堆的数据结构,可以用来维护一组元素,并保证每次访问的都是当前最大或最小的元素。
`priority_queue<int>`表示的是一个最大堆,它的元素按照从大到小的顺序排序;而`priority_queue<int, vector<int>, greater<int>>`表示的是一个最小堆,它的元素按照从小到大的顺序排序。
下面是一个使用`priority_queue`的C++示例代码:
```cpp
#include <iostream>
#include <queue>
using namespace std;
int main() {
priority_queue<int> q;
q.push(3);
q.push(1);
q.push(4);
q.push(1);
while (!q.empty()) {
cout << q.top() << " ";
q.pop();
}
cout << endl;
return 0;
}
```
输出结果为:4 3 1 1 (注意:最大值在堆的顶部)
下面是一个使用`priority_queue<int, vector<int>, greater<int>>`的C++示例代码:
```cpp
#include <iostream>
#include <queue>
using namespace std;
int main() {
priority_queue<int, vector<int>, greater<int>> q;
q.push(3);
q.push(1);
q.push(4);
q.push(1);
while (!q.empty()) {
cout << q.top() << " ";
q.pop();
}
cout << endl;
return 0;
}
```
输出结果为:1 1 3 4 (注意:最小值在堆的顶部)
这里提供一个样例,输入5个整数,然后输出元素按照从小到大排序后的结果。如下所示:
```
5
3
1
4
2
```
运行截图如下:
![priority_queue](https://img-blog.csdnimg.cn/20211015204656779.png)
可以看到,使用`priority_queue<int>`输出的结果是4 3 2 1 5,而使用`priority_queue<int, vector<int>, greater<int>>`输出的结果是1 2 3 4 5。两者的不同在于元素的排序方式不同。
阅读全文