c++优先队列如何访问第i个数
时间: 2024-05-13 22:20:07 浏览: 70
优先级队列的C++实现
C++ STL中的优先队列是不支持随机访问的,因为其内部实现是基于堆的数据结构,只能访问队首元素(即最大或最小元素)。如果需要访问第i个元素,可以将队列中的元素取出存放到一个数组中,然后再按需要访问数组中的元素。
以下是一个示例代码,演示如何将优先队列中的元素存放到一个数组中,并按下标访问其中的元素:
```c++
#include <iostream>
#include <queue>
using namespace std;
int main() {
priority_queue<int> pq;
pq.push(3);
pq.push(5);
pq.push(1);
pq.push(2);
int arr[pq.size()];
int i = 0;
while (!pq.empty()) {
arr[i++] = pq.top();
pq.pop();
}
// 访问第i个元素
int j = 2;
cout << arr[j] << endl; // 输出第3个元素,即1
return 0;
}
```
在上面的代码中,我们首先创建了一个优先队列`pq`,并将一些元素压入队列中。然后创建了一个数组`arr`,并将队列中的元素依次取出存放到数组中。最后按下标访问数组中的元素即可。
阅读全文