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

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

优先队列是一种容器适配器,专门设计为队列的第一个元素是队列中所有元素中最大或最小的。通常,元素按优先级排序。但是在C ++ STL中,默认情况下,顶部元素是最大元素。创建优先队列时,我们还可以通过传递附加参数来使最小元素位于顶部。它类似于最小/最大堆。

priority_queue :: top()

top()函数用于引用优先队列的顶部元素。默认情况下,C ++ STL中的顶(默认)元素是最大元素。

但是在其他编程语言中,例如Java,默认情况下创建小堆,并且top()给出最小元素。

语法:

pqueuename.top()
参数:
不需要传递任何值作为参数。
返回:
优先级队列容器中的顶部(默认情况下是最大元素)
直接参考。

例子:

输入:pqueue.push(5); 
       pqueue.push(1); 
       pqueue.top();
输出:5

输入:pqueue.push(5); 
       pqueue.push(1); 
       pqueue.push(7); 
       pqueue.top();
输出:7

错误和异常 1.如果优先队列容器为空,则会导致未定义的行为2.如果优先队列不为空,则不会引发任何异常

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

输出:

7

时间复杂度: O(1)

辅助空间: O(n)

应用: 给定整数的优先队列,查找素数和非素数的数量。

输入:8、6、3、2、1
输出:素数-2
      非质数-3 

算法 1.将优先队列的大小输入变量中。 2.检查优先队列是否为空,检查顶部元素是否为素数,如果素数增加素数计数器并弹出顶部元素。 3.重复此步骤,直到优先队列为空。 4.打印变量prime和nonprime(size-prime)的最终值。

// CPP program to illustrate
// Application of top() function
#include <iostream>
#include <queue>
using namespace std;
 
int main()
{
    int prime = 0,nonprime = 0,size;
    priority_queue<int> 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;
}  

输出:

素数-2
 非质数-3 

时间复杂度: O(nlogn)

辅助空间: O(1)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 教程