C++ priority_queue 套 pair 的使用
时间: 2023-05-11 14:07:26 浏览: 271
C++ priority_queue 可以使用 pair 作为元素类型,可以按照 pair 的第一个元素进行排序。使用方法如下:
```c++
#include <queue>
#include <iostream>
using namespace std;
int main() {
priority_queue<pair<int, int>> q;
q.push(make_pair(2, 1));
q.push(make_pair(1, 2));
q.push(make_pair(3, 3));
while (!q.empty()) {
cout << q.top().first << " " << q.top().second << endl;
q.pop();
}
return 0;
}
```
输出结果为:
```
3 3
2 1
1 2
```
其中,pair 的第一个元素为优先级,第二个元素为实际的值。在上面的例子中,优先级高的元素先被取出。
相关问题
c++ priority_queue可以存pair嘛
是的,C++中的`priority_queue`可以存储`pair`。`pair`是一个模板类,它可以包含两个不同的数据类型的值。你可以使用`pair`来表示键值对,然后将其存储在`priority_queue`中。
以下是一个示例代码,演示了如何将`pair`存储在`priority_queue`中:
```cpp
#include <iostream>
#include <queue>
using namespace std;
int main() {
priority_queue<pair<int, int>> pq;
// 添加几个pair
pq.push(make_pair(1, 2));
pq.push(make_pair(3, 4));
pq.push(make_pair(5, 6));
// 访问并输出存储在priority_queue中的pair
while (!pq.empty()) {
pair<int, int> topPair = pq.top();
cout << "First: " << topPair.first << ", Second: " << topPair.second << endl;
pq.pop();
}
return 0;
}
```
这段代码创建了一个存储`pair<int, int>`类型的`priority_queue`,然后将几个pair添加到队列中。然后,通过循环访问并输出存储在`priority_queue`中的pair,直到队列为空。
请注意,`priority_queue`默认按照其第一个元素的值进行排序,这意味着较小的第一个元素会具有更高的优先级。
priority_queue用法pair
priority_queue是C++ STL中的一个容器适配器,它提供了常规队列不具备的一些功能,例如可以按照元素的优先级进行排序。pair是STL中的一个模板类,用于存储一对值,通常用于将两个值“捆绑”在一起。在priority_queue中使用pair可以实现按照一定规则对一对值进行排序。
下面是一个使用pair的例子:
```
#include <iostream>
#include <queue>
using namespace std;
int main() {
priority_queue<pair<int, int>> pq;
pq.push(make_pair(1, 2));
pq.push(make_pair(3, 4));
pq.push(make_pair(2, 5));
while (!pq.empty()) {
cout << pq.top().first << " " << pq.top().second << endl;
pq.pop();
}
return 0;
}
```
输出结果为:
```
3 4
2 5
1 2
```
这里定义了一个pair类型的priority_queue,按照pair的第一个元素从大到小排序,如果第一个元素相同,则按照第二个元素从大到小排序。在push时使用make_pair将两个值“捆绑”在一起,top返回队列中第一个元素,pop弹出队列中第一个元素。
阅读全文