📅  最后修改于: 2023-12-03 15:13:56.613000             🧑  作者: Mango
在C++的STL标准库中,priority_queue是一种高效的数据结构,它是一个优先队列,基于堆实现。priority_queue中的元素按照一定的优先级进行排序,并且每次取出的元素都是优先级最高的。该数据结构支持push()和pop()两种操作。
push()方法用于向priority_queue中插入元素,插入的元素将按照优先级进行排序。该方法的原型如下:
void push (const value_type& val);
其中,value_type表示priority_queue中存储的元素类型,val表示要插入的元素。
下面是一个示例代码片段,演示如何使用push()方法插入元素到priority_queue中:
#include <iostream>
#include <queue>
int main() {
std::priority_queue<int> pq;
pq.push(10);
pq.push(20);
pq.push(5);
while (!pq.empty()) {
std::cout << pq.top() << " ";
pq.pop();
}
return 0;
}
输出结果为:20 10 5
在上面的示例中,我们创建了一个存储int类型的priority_queue对象pq,并依次使用push()方法插入了三个元素。最后,我们使用top()方法获取优先级最高的元素并输出,然后使用pop()方法将其从priority_queue中移除,重复这个过程直到priority_queue为空。
pop()方法用于移除priority_queue中优先级最高的元素。该方法不返回任何值。其原型如下:
void pop ();
下面是一个示例代码片段,演示如何使用pop()方法移除priority_queue中的元素:
#include <iostream>
#include <queue>
int main() {
std::priority_queue<int> pq;
pq.push(10);
pq.push(20);
pq.push(5);
pq.pop();
while (!pq.empty()) {
std::cout << pq.top() << " ";
pq.pop();
}
return 0;
}
输出结果为:10 5
在上面的示例中,我们创建了一个存储int类型的priority_queue对象pq,并依次使用push()方法插入了三个元素。然后,我们使用pop()方法移除了优先级最高的元素,再次使用top()方法获取新的优先级最高的元素并输出,然后使用pop()方法将其从priority_queue中移除,重复这个过程直到priority_queue为空。
priority_queue中的push()方法用于插入元素,pop()方法用于移除优先级最高的元素。通过push()和pop()这两种操作,我们可以使用priority_queue实现高效的优先队列数据结构。注意,priority_queue是自动对元素进行排序的,默认情况下是按照元素类型的'operator<'进行比较的,也可以通过自定义比较函数来实现不同的排序规则。
以上介绍了C++ STL中priority_queue的push()和pop()方法的使用,希望对程序员们有所帮助。