c++ priority_queue的插入和删除操作

avatar
作者
猴君
阅读量:0

C++中的priority_queue是一个容器适配器,它提供了常数时间查找最大元素(在std::greater比较器下为最小元素)的能力,并且可以在对数时间内插入和删除元素

  1. 插入操作:使用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; } 
  1. 删除操作:使用pop()方法从priority_queue中删除最大(或最小)元素。注意,pop()只会删除堆顶元素,而不是指定元素。如果要删除指定元素,请使用std::make_heapstd::push_heapstd::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; 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!