priority_queue::swap() in C++ STL

Priority queues are a type of container adaptors, specifically designed such that the first element of the queue is the greatest of all elements in the queue.

priority_queue::swap()

This function is used to swap the contents of one priority queue with another priority queue of same type and size.

Syntax :



priorityqueuename1.swap(priorityqueuename2)
Parameters :
The name of the priority queue with which
the contents have to be swapped.
Result :
All the elements of the 2 priority queues are swapped.

Examples:

Input  : mypqueue1 = {1, 2, 3, 4}
         mypqueue2 = {3, 5, 7, 9}
         mypqueue1.swap(mypqueue2);
Output : mypqueue1 = {9, 7, 5, 3}
         mypqueue2 = {4, 3, 2, 1}

Input  : mypqueue1 = {1, 3, 5, 7}
         mypqueue2 = {2, 4, 6, 8}
         mypqueue1.swap(mypqueue2);
Output : mypqueue1 = {8, 6, 4, 2}
         mypqueue2 = {7, 5, 3, 1}
Note: In priority_queue container, the elements are printed
      in reverse order because the top is printed first
      then moving on to other elements.

Errors and Exceptions

1. It throws an error if the priority queues are not of the same type.
2. It has a basic no exception throw guarantee otherwise.

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP program to illustrate
// Implementation of swap() function
#include <iostream>
#include <queue>
using namespace std;
  
int main()
{
    // priority_queue container declaration
    priority_queue<int> mypqueue1;
    priority_queue<int> mypqueue2;
  
    // pushing elements into the 1st priority queue
    mypqueue1.push(1);
    mypqueue1.push(2);
    mypqueue1.push(3);
    mypqueue1.push(4);
  
    // pushing elements into the 2nd priority queue
    mypqueue2.push(3);
    mypqueue2.push(5);
    mypqueue2.push(7);
    mypqueue2.push(9);
  
    // using swap() function to swap elements of priority queues
    mypqueue1.swap(mypqueue2);
  
    // printing the first priority queue
    cout << "mypqueue1 = ";
    while (!mypqueue1.empty()) {
        cout << mypqueue1.top() << " ";
        mypqueue1.pop();
    }
  
    // printing the second priority queue
    cout << endl
         << "mypqueue2 = ";
    while (!mypqueue2.empty()) {
        cout << mypqueue2.top() << " ";
        mypqueue2.pop();
    }
    return 0;
}

chevron_right


Output:

mypqueue1 = 9 7 5 3 
mypqueue2 = 4 3 2 1 


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : ParulShandilya