📜  C++ STL中的priority_queue :: top()

📅  最后修改于: 2021-05-30 16:41:37             🧑  作者: Mango

优先级队列是一种容器适配器,经过专门设计,以使队列的第一个元素在队列中的所有元素中占最大比例。

priority_queue :: top()

top()函数用于引用优先级队列的top(或最大)元素。
句法 :

pqueuename.top()
Parameters :
No value is needed to pass as the parameter.
Returns :
Direct reference to the top(or the largest)
element of the priority queue container.

例子:

Input  : pqueue.push(5);
         pqueue.push(1);
         pqueue.top();
Output : 5

Input  : pqueue.push(5);
         pqueue.push(1);
         pqueue.push(7);
         pqueue.top();
Output : 7

错误和异常

1.如果优先级队列容器为空,则会导致未定义的行为
2.如果优先级队列不为空,则没有异常抛出保证

// CPP program to illustrate
// Implementation of top() function
#include 
#include 
using namespace std;
  
int main()
{
    priority_queue pqueue;
    pqueue.push(5);
    pqueue.push(1);
    pqueue.push(7);
  
    // Priority queue top
    cout << pqueue.top();
    return 0;
}

输出:

7

应用 :
给定一个优先级整数队列,找到质数和非质数的数量。

Input : 8, 6, 3, 2, 1
Output: Prime - 2
        Non Prime - 3

算法
1.在变量中输入优先级队列的大小。
2.检查优先级队列是否为空,检查最上面的元素是否为素数,如果prime递增素数计数器,然后弹出最上面的元素。
3.重复此步骤,直到优先级队列为空。
4.打印变量prime和nonprime(size – prime)的最终值。

// CPP program to illustrate
// Application of top() function
#include 
#include 
using namespace std;
  
int main()
{
    int prime = 0, nonprime = 0, size;
    priority_queue pqueue;
    pqueue.push(1);
    pqueue.push(8);
    pqueue.push(3);
    pqueue.push(6);
    pqueue.push(2);
    size = pqueue.size();
  
    // Priority queue becomes 1, 8, 3, 6, 2
  
    while (!pqueue.empty()) {
        for (int i = 2; i <= pqueue.top() / 2; ++i) {
            if (pqueue.top() % i == 0) {
                prime++;
                break;
            }
        }
        pqueue.pop();
    }
    cout << "Prime - " << prime << endl;
    cout << "Non Prime - " << size - prime;
    return 0;
}

输出:

Prime - 2
Non Prime - 3
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”