Skip to content
Related Articles

Related Articles

stack swap() in C++ STL
  • Difficulty Level : Basic
  • Last Updated : 09 Oct, 2019
GeeksforGeeks - Summer Carnival Banner

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 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
Want to learn from the best curated videos and practice problems, check out the C++ Foundation Course for Basic to Advanced C++ and C++ STL Course for foundation plus STL.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.
My Personal Notes arrow_drop_up
Recommended Articles
Page :