C++ priority_queue::top() Function



The C++ std::priority_queue::top() function is used to retrieve the highest priority element without removing it from the queue. It is useful for accessing the element with the highest priority without altering the queue state. It simplifies the process of accessing priority elements, helping efficient priority based operations. The time complexity of this function is constant i.e.O(1).

Syntax

Following is the syntax for std::priority_queue::top() function.

const_reference top() const;

Parameters

This function does not accept any parameter.

Return value

This function returns reference to the top element of the priority_queue.

Example

Let's look at the following example, where we are going to get the maximum element in the priority_queue.

#include <iostream>
#include <queue>
int main()
{
    std::priority_queue<int> a;
    a.push(11);
    a.push(333);
    a.push(2222);
    std::cout << " " << a.top() << std::endl;
    return 0;
}

Output

Output of the above code is as follows −

2222

Example

Consider the another scenario, where we are going to access the top element of the priority_queue without removing it.

#include <iostream>
#include <queue>
int main()
{
    std::priority_queue<int> a;
    a.push(333);
    a.push(1);
    a.push(22);
    a.push(4342);
    std::cout << "Top element: " << a.top() << std::endl;
    std::cout << "Size after accessing top element:" << a.size() << std::endl;
    return 0;
}

Output

Following is the output of the above code −

Top element: 4342
Size after accessing top element:4

Example

In the following example, we are going to apply the top() function on the priority_queue initialized with string values.

#include <iostream>
#include <queue>
using namespace std;
int main()
{
    priority_queue<string> a;
    a.push("Ninja");
    a.push("Kawasaki");
    a.push("KTM");
    cout << " " << a.top() << endl;
    return 0;
}

Output

Let us compile and run the above program, this will produce the following result −

Ninja

Example

Following is the example, where we are going to iteratively access and remove top elements from the priority_queue until it becomes empty.

#include <iostream>
#include <queue>
int main()
{
    std::priority_queue<int> a;
    a.push(11);
    a.push(2);
    a.push(32);
    while (!a.empty()) {
        std::cout << "Top element: " << a.top() << std::endl;
        a.pop();
    }
    return 0;
}

Output

If we run the above code it will generate the following output −

Top element: 32
Top element: 11
Top element: 2
priority_queue.htm
Advertisements