📜  C++ STL中的priority_queue :: push()和priority_queue :: pop()(1)

📅  最后修改于: 2023-12-03 15:13:56.613000             🧑  作者: Mango

C++ STL中的priority_queue::push()和priority_queue::pop()

1. 介绍

在C++的STL标准库中,priority_queue是一种高效的数据结构,它是一个优先队列,基于堆实现。priority_queue中的元素按照一定的优先级进行排序,并且每次取出的元素都是优先级最高的。该数据结构支持push()和pop()两种操作。

2. priority_queue::push()方法

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为空。

3. priority_queue::pop()方法

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为空。

4. 总结

priority_queue中的push()方法用于插入元素,pop()方法用于移除优先级最高的元素。通过push()和pop()这两种操作,我们可以使用priority_queue实现高效的优先队列数据结构。注意,priority_queue是自动对元素进行排序的,默认情况下是按照元素类型的'operator<'进行比较的,也可以通过自定义比较函数来实现不同的排序规则。

以上介绍了C++ STL中priority_queue的push()和pop()方法的使用,希望对程序员们有所帮助。