Skip to content
Related Articles

Related Articles

stack swap() in C++ STL

View Discussion
Improve Article
Save Article
Like Article
  • Difficulty Level : Basic
  • Last Updated : 21 Jun, 2022

Stacks are a type of container adaptors with LIFO(Last In First Out) type of work, where a new element is added at one end and (top) an element is removed from that end only.

stack::swap()

This function is used to swap the contents of one stack with another stack of same type but the size may vary. Syntax :

stackname1.swap(stackname2)

Parameters: The name of the stack with which the contents have to be swapped. Result: All the elements of the 2 stack are swapped. Examples:

contents of the stack from top to bottom are
Input  : mystack1 = {4, 3, 2, 1}
         mystack2 = {9, 7 ,5, 3}
         mystack1.swap(mystack2);
Output : mystack1 =  9, 7, 5, 3
         mystack2 =  4, 3, 2, 1

Input  : mystack1 = {7, 5, 3, 1}
         mystack2 = {8, 6, 4, 2}
         mystack1.swap(mystack2);
Output : mystack1 =  8, 6, 4, 2
         mystack2 =  7, 5, 3, 1

Note: In stack container, the elements are printed in reverse order because the top is printed first then moving on to other elements. 

CPP




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

Output:

mystack1 = 9 7 5 3
mystack2 = 4 3 2 1

Time Complexity: O(1)

Auxiliary Space: O(n)


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!