c++STL库优先队列
时间: 2023-09-11 21:06:45 浏览: 138
STL(Standard Template Library)是C++的一个标准库,包含了许多常用的数据结构和算法。其中,优先队列是STL中的一种容器适配器,它提供了一种特殊的队列数据结构,能够按照元素的优先级进行排序和访问。
优先队列通常使用堆(heap)作为底层实现,可以自动将元素按照特定的比较规则进行排序。在C++中,优先队列被定义在<queue>头文件中,并且可以通过适配器priority_queue来使用。
下面是一个简单的示例代码,展示了如何使用STL的优先队列:
```cpp
#include <iostream>
#include <queue>
int main() {
std::priority_queue<int> pq;
pq.push(3);
pq.push(1);
pq.push(4);
pq.push(1);
while (!pq.empty()) {
std::cout << pq.top() << " ";
pq.pop();
}
return 0;
}
```
这段代码创建了一个整数类型的优先队列`pq`,并依次插入了4个元素。在输出时,它们按照从大到小的顺序被访问和移除。输出结果为:4 3 1 1。
可以发现,优先队列的插入操作和删除操作的时间复杂度都为O(logN),其中N为队列的大小。同时,优先队列还提供了一些其他的成员函数,如`size()`返回队列大小,`empty()`判断队列是否为空,`top()`获取队首元素等。
需要注意的是,优先队列默认使用`std::less`作为比较规则,即按照元素的降序排序。如果需要按照其他方式进行排序,可以自定义比较函数或使用lambda表达式传入比较规则。
阅读全文