阅读量:0
C++中的priority_queue
是一个容器适配器,它提供了常数时间查找最大元素(在std::greater
比较器下为最小元素)的能力,并且可以在对数时间内插入和删除元素
- 插入操作:使用
push()
方法将元素添加到priority_queue
中。这将根据比较函数将新元素放置在正确的位置。
示例代码:
#include<iostream> #include<queue> int main() { std::priority_queue<int> pq; // 插入元素到 priority_queue pq.push(5); pq.push(8); pq.push(3); pq.push(1); // priority_queue 中的元素:1, 3, 5, 8 return 0; }
- 删除操作:使用
pop()
方法从priority_queue
中删除最大(或最小)元素。注意,pop()
只会删除堆顶元素,而不是指定元素。如果要删除指定元素,请使用std::make_heap
、std::push_heap
和std::pop_heap
等算法重新实现一个自定义的堆容器。
示例代码:
#include<iostream> #include<queue> int main() { std::priority_queue<int> pq; pq.push(5); pq.push(8); pq.push(3); pq.push(1); // priority_queue 中的元素:1, 3, 5, 8 // 删除堆顶元素(最小值) pq.pop(); // priority_queue 中的元素:3, 5, 8 return 0; }
请注意,上述示例中的priority_queue
默认为最大堆。如果需要最小堆,请在声明priority_queue
时传递std::greater<int>
作为模板参数,如下所示:
std::priority_queue<int, std::vector<int>, std::greater<int>> min_heap;