C++ STL Stack Container Adaptor – std::stack

In this tutorial you will learn about STL stack container adaptor in C++ i.e. std::stack and all functions which it provides.

std::stack is a container adaptor. We know that container adaptors are not containers. They provide specific interfaces. Elements manipulated in container adaptors by encapsulated functions of specific classes.

Stack operates in Last in First out (LIFO) type of arrangement. Always elements will be inserted and also deleted at same side of the stack.

Working with direct operations on stack/queue and other container adaptors, will so much useful in competitive programming. It saves time and also encapsulated functions of object implemented in best complexity way. When program size too large, instead of writing entire code if we use direct functions from library that gives unambiguity while working.

C++ STL Stack Container Adaptor – std::stack

To work with stl container, we first need to include stack header file.

#include<stack>

The functions associated with stack are:

push(element): Inserting elements into stack is called “push” operation.

pop(element): Removing elements into stack is called “pop” operation.

top(element): Displays the top element of the stack.

size(element): Returns the size of the stack

empty(): This is Boolean operation which returns whether the stack is empty or not.

Program to show the above functions on stack:

#include<iostream>
#include<stack>

using namespace std;

int main()
{
	stack <int> stk; // declearing stack

	for (int i=0; i<5; i++){
		// pushing elements into stack
		stk.push(i);
	}

	cout << "size of the stack is ";
	cout << stk.size() << endl;
	
	cout << "top of the stack is ";
	cout << stk.top() << endl;
	
	// to show all elements we should pop each time.
	// Since we can only access top of the stack.
	cout << "elements of the stack are " << endl ;
	for (int i=0; i<5; i++){
		cout << stk.top() << " ";
		stk.pop(); // popping element after showing
	}
	cout << endl;
	
	if (stk.empty() == 1) {
		cout << "finally stack is empty " << endl;
	}
	else {
	    cout << "stack is not empty " << endl;
	}	
	
	return 0;
}

Output

size of the stack is 5
top of the stack is 4
elements of the stack are
4 3 2 1 0
finally stack is empty

One other operations is:

swap(): Swap function swaps the elements in one stack to other.

#include <iostream>
#include <stack>

using namespace std;

int main(){
	stack <int> stk1, stk2;

	for (int i=1; i<6; i++){
		stk1.push(i+10);
	}
	
	cout << "elements 11, 12, 13, 14, 15 pushed into stack 1" << endl;
	for (int i=1; i<6; i++){
		stk2.push(i*10);
	}
	
	cout << "elements 10, 20, 30, 40, 50 pushed into stack 2" << endl;
	
	cout << "doing swapping operation..... " << endl;
	stk1.swap(stk2);
	cout << "after swapping " << endl;
	
	cout << "elements of stack 1 are " ;
	for (int i=0; i<5; i++){
		cout << stk1.top() << " ";
		stk1.pop();
	}

	cout << endl;
	cout << "elements of stack 2 are " ;
	for (int i=0; i<5; i++){
		cout << stk2.top() << " ";
		stk2.pop();
	}
	
	return 0;
}

Output

elements 11, 12, 13, 14, 15 pushed into stack 1
elements 10, 20, 30, 40, 50 pushed into stack 2
doing swapping operation…..
after swapping
elements of stack 1 are 50 40 30 20 10
elements of stack 2 are 15 14 13 12 11

Comment below if you have any queries related to above tutorial for stl stack or std::stack.

Leave a Comment

Your email address will not be published. Required fields are marked *