Open In App

# priority_queue::empty() and priority_queue::size() in C++ STL

Priority queues are a type of container adaptors, specifically designed such that the first element of the queue is either the greatest or the smallest of all elements in the queue. However, in C++ STL (by default) the largest element is at the top. We can also create a priority queue having the smallest element at the top by simply passing an extra parameter while creating the priority queue.

priority_queue::empty()

empty() function is used to check if the priority queue container is empty or not.

Syntax :

Time complexity: O(1)

```pqueuename.empty()
Parameters :
No parameters are passed
Returns :
True, if priority queue is empty,
False, Otherwise```

Examples:

```Input :  pqueue = 3, 2, 1
pqueue.empty();
Output : False

Input :  pqueue
pqueue.empty();
Output : True```

Errors and Exceptions

1. Shows error if a parameter is passed
2. Shows no exception throw guarantee.

## CPP

 `// CPP program to illustrate``// Implementation of empty() function``#include ``#include ``using` `namespace` `std;` `int` `main()``{``    ``priority_queue<``int``> pqueue;``    ``pqueue.push(1);` `    ``// Priority Queue becomes 1` `    ``if` `(pqueue.empty()) {``        ``cout << "True";``    ``}``    ``else` `{``        ``cout << "False";``    ``}``    ``return` `0;``}`

Output:

`False`

Application : Given a priority queue of integers, find the sum of the all the integers.

```Input  : 8, 6, 3, 2, 1
Output : 20```

Algorithm

1. Check if the priority queue is empty, if not add the top element to a variable initialised as 0, and pop the top element.
2. Repeat this step until the priority queue is empty.
3. Print the final value of the variable.

## CPP

 `// CPP program to illustrate``// Application of empty() function``#include ``#include ``using` `namespace` `std;` `int` `main()``{``    ``int` `sum = 0;``    ``priority_queue<``int``> pqueue;``    ``pqueue.push(8);``    ``pqueue.push(6);``    ``pqueue.push(3);``    ``pqueue.push(2);``    ``pqueue.push(1);` `    ``// Queue becomes 8, 6, 3, 2, 1` `    ``while` `(!pqueue.empty()) {``        ``sum = sum + pqueue.top();``        ``pqueue.pop();``    ``}``    ``cout << sum;``    ``return` `0;``}`

Output:

`20`
priority_queue::size()

size() function is used to return the size of the priority queue container or the number of elements in the container.

#### Time complexity: O(1)

Syntax :

```pqueuename.size()
Parameters :
No parameters are passed
Returns :
Number of elements in the container```

Examples:

```Input :  pqueue = 3, 2, 1
pqueue.size();
Output : 3

Input :  pqueue
pqueue.size();
Output : 0```

Errors and Exceptions

1. Shows error if a parameter is passed.
2. Shows no exception throw guarantee

## CPP

 `// CPP program to illustrate``// Implementation of size() function``#include ``#include ``using` `namespace` `std;` `int` `main()``{``    ``int` `sum = 0;``    ``priority_queue<``int``> pqueue;``    ``pqueue.push(8);``    ``pqueue.push(6);``    ``pqueue.push(3);``    ``pqueue.push(3);``    ``pqueue.push(1);` `    ``// Priority Queue becomes 8, 6, 3, 2, 1` `    ``cout << pqueue.size();` `    ``return` `0;``}`

Output:

`5`

Application : Given a priority queue of integers, find the sum of the all the integers.

```Input  : 8, 6, 3, 2, 1
Output : 20```

Algorithm

1. Check if the size of the priority queue is 0, if not add the top element to a variable initialised as 0, and pop the top element.
2. Repeat this step until the sizeof the priority queue becomes 0.
3. Print the final value of the variable.

## CPP

 `// CPP program to illustrate``// Application of size() function``#include ``#include ``using` `namespace` `std;` `int` `main()``{``    ``int` `sum = 0;``    ``priority_queue<``int``> pqueue;``    ``pqueue.push(8);``    ``pqueue.push(6);``    ``pqueue.push(3);``    ``pqueue.push(2);``    ``pqueue.push(1);` `    ``// Queue becomes 8, 6, 3, 2, 1` `    ``while` `(pqueue.size() > 0) {``        ``sum = sum + pqueue.top();``        ``pqueue.pop();``    ``}``    ``cout << sum;``    ``return` `0;``}`

Output:

`20`

Let us see the differences in a tabular form -: