请用c++实现一个标准优先队列ADT,包括push、pop、size、empty操作
时间: 2023-07-10 16:36:08 浏览: 126
优先级队列的C++实现
好的,以下是一个基于STL的C++实现:
```cpp
#include <queue>
template <typename T>
class PriorityQueue {
public:
// 入队
void push(const T& value) {
pq.push(value);
}
// 出队
void pop() {
pq.pop();
}
// 获取队列大小
int size() const {
return pq.size();
}
// 判断队列是否为空
bool empty() const {
return pq.empty();
}
// 获取队头元素
T top() const {
return pq.top();
}
private:
std::priority_queue<T> pq;
};
```
使用方式如下:
```cpp
PriorityQueue<int> pq;
pq.push(3);
pq.push(1);
pq.push(4);
pq.push(1);
while (!pq.empty()) {
std::cout << pq.top() << " ";
pq.pop();
}
// 输出结果为:4 3 1 1
```
注意,这里使用了STL中的priority_queue容器作为底层实现,因此需要包含头文件`<queue>`。
阅读全文