Cambo Freelance
ទំព័រដើមសេវាកម្មអត្ថបទការបង្រៀនក្រុមវគ្គបណ្តុះបណ្តាលទំនាក់ទំនង
Cambo Freelance

Professional freelance team from Cambodia delivering technology-driven solutions with cultural insight and modern expertise.

ផ្ញើសាររបស់អ្នក

ត្រៀមចាប់ផ្តើមគម្រោងរបស់អ្នក? ទំនាក់ទំនងក្រុមរបស់យើង។

ទំនាក់ទំនង

សេវាកម្ម

  • Web & Mobile Development Services
  • Graphic Design & Branding Services

តំណភ្ជាប់មានប្រយោជន៍

  • ទំព័រដើម
  • សេវាកម្ម
  • ការសិក្សា
  • អំពីយើង
  • ទំនាក់ទំនង
  • តម្លៃ

© 2026 Cambo Freelance. រក្សាសិទ្ធិទាំងអស់។

TelegramFacebookLinkedInEmail
HomeTutorialsC++C++ Stacks
⚡C++ Tutorials

50 lessons

Beginner(21)1C++ Introduction2C++ Getting Started3C++ Syntax4C++ Output5C++ Comments6C++ Variables7C++ Data Types8C++ Constants9C++ User Input10C++ Operators11C++ Strings12C++ Math13C++ Booleans14C++ Conditions15C++ Switch16C++ Loops17C++ Break and Continue18C++ Arrays19C++ Functions20C++ References21C++ Pointers
Intermediate(19)22C++ Classes23C++ Objects24C++ Constructors25C++ Access Specifiers
Advanced(10)41C++ Smart Pointers42C++ Templates43C++ Lambda Functions44
⚡

C++ Tutorials

Lesson 40 of 50

All lessons
Beginner (21)1C++ Introduction2C++ Getting Started
26
C++ Encapsulation
27C++ Inheritance
28C++ Polymorphism
29C++ Abstraction
30C++ Files
31C++ Exception Handling
32C++ Namespaces
33C++ Structures
34C++ Enumerations
35C++ STL Introduction
36C++ Vectors
37C++ Maps
38C++ Sets
39C++ Queues
40C++ Stacks
C++ Move Semantics
45C++ Multithreading
46C++ Design Patterns
47C++ Memory Management
48C++17 Features
49C++20 Features
50C++ Performance Optimization
3
C++ Syntax
4C++ Output
5C++ Comments
6C++ Variables
7C++ Data Types
8C++ Constants
9C++ User Input
10C++ Operators
11C++ Strings
12C++ Math
13C++ Booleans
14C++ Conditions
15C++ Switch
16C++ Loops
17C++ Break and Continue
18C++ Arrays
19C++ Functions
20C++ References
21C++ Pointers
Intermediate (19)22C++ Classes23C++ Objects24C++ Constructors25C++ Access Specifiers26C++ Encapsulation27C++ Inheritance28C++ Polymorphism29C++ Abstraction30C++ Files31C++ Exception Handling32C++ Namespaces33C++ Structures34C++ Enumerations35C++ STL Introduction36C++ Vectors37C++ Maps38C++ Sets39C++ Queues40C++ Stacks
Advanced (10)41C++ Smart Pointers42C++ Templates43C++ Lambda Functions44C++ Move Semantics45C++ Multithreading46C++ Design Patterns47C++ Memory Management48C++17 Features49C++20 Features50C++ Performance Optimization
⚡C++IntermediateLesson 40 of 50CamboFreelanceJune 19, 2026

C++ Stacks

Learn the C++ stack container: LIFO operations with push, pop, top. Real-world examples including string reversal and bracket matching.


Tutorials › C++ › Stacks
Intermediate6 min readLesson 40 of 50

What is a Stack?

A stack is a LIFO (Last-In-First-Out) container. Elements are pushed and popped from the same end — the "top". Include <stack>.

#include <iostream>
#include <stack>
using namespace std;

int main() {
    stack<int> s;
    s.push(10);
    s.push(20);
    s.push(30);

    cout << "Top: " << s.top() << endl;   // 30
    cout << "Size: " << s.size() << endl; // 3

    while (!s.empty()) {
        cout << s.top() << " ";
        s.pop();
    }
    cout << endl;
    return 0;
}

Output:

Top: 30
Size: 3
30 20 10

Real-World Use Cases

  • Undo/Redo in text editors
  • Browser back button (page history)
  • Function call stack in program execution
  • Expression evaluation (balanced parentheses, RPN)
// Check balanced parentheses using a stack
string expr = "{[()]}";
stack<char> st;
bool balanced = true;

for (char c : expr) {
    if (c=='(' || c=='[' || c=='{') {
        st.push(c);
    } else {
        if (st.empty()) { balanced = false; break; }
        char top = st.top(); st.pop();
        if ((c==')' && top!='(') || (c==']' && top!='[') || (c=='}' && top!='{'))
            { balanced = false; break; }
    }
}
if (!st.empty()) balanced = false;
cout << (balanced ? "Balanced" : "Not balanced") << endl;  // Balanced

Exercise

Use a stack to reverse a string. Push each character onto a stack, then pop them off to form the reversed string.

Show Solution
#include <iostream>
#include <stack>
#include <string>
using namespace std;

int main() {
    string input = "Hello, World!";
    stack<char> s;
    for (char c : input) s.push(c);
    string reversed = "";
    while (!s.empty()) { reversed += s.top(); s.pop(); }
    cout << reversed << endl;   // !dlroW ,olleH
    return 0;
}

Quiz

  1. What does LIFO mean?

    • A) Last In, Fast Out
    • B) Last In, First Out
    • C) Linear In, First Out
    • D) List In, Final Out
    Answer

    B) Last In, First Out

Summary

  • stack is LIFO: push and pop from the top.
  • Methods: push, pop, top, empty, size.
  • Classic use cases: undo, browser history, expression parsing.
← Previous: Queues Next: Smart Pointers →
c++stacksstlintermediate
PreviousLesson 39: C++ QueuesNextLesson 41: C++ Smart Pointers
Back to All Tutorials