bhylu.com

Advertisements

C++ Stacks and Queues

Use stack and queue adaptors to state removal order without exposing unnecessary container operations.

How it works

Container adaptors present a narrow interface over an underlying sequence. std::stack removes the newest item first; std::queue removes the oldest. top or front observes the next value and pop removes it without returning it. Check empty before either observation or removal. These operations describe a local scheduling policy, not thread-safe communication or persistence. Use a synchronized queue design when several workers access shared work concurrently.

Run it locally

Use a C++20 compiler and matching standard library in a separate lab folder. The command uses c++; substitute g++, clang++ or zig c++ for your toolchain. C++ does not currently run in Bhylu’s browser playground. Apache, PHP and MySQL are not needed.

c++ -std=c++20 -Wall -Wextra -Wpedantic -Werror stacks-queues.cpp -o lesson

On Windows use -o lesson.exe and run .\lesson.exe in PowerShell. On Unix-like systems run ./lesson. Thread examples may need -pthread on your platform.

Download the complete C++ source. Run file labs in a private empty directory, away from existing reports.

Example

C++20 · stacks-queues.cpp

#include <iostream>
#include <stack>
#include <queue>

int main() {
    std::stack<int> undo;
    undo.push(10); undo.push(20);
    std::cout << "Undo: " << undo.top() << '\n'; undo.pop();
    std::queue<int> work;
    work.push(10); work.push(20);
    std::cout << "Next job: " << work.front() << '\n'; work.pop();
}

Expected result

Undo: 20
Next job: 10

The same insertion sequence yields different next values because the adaptors express different policies. The fixed fixture guarantees nonempty state at each access. A bounded application must also decide what happens when its work limit is reached; a standard queue does not automatically impose a business capacity or discard policy.

Consult the WG21 C++ working group and the C++ Core Guidelines for language references and design guidance. Check the selected standard version and your implementation’s library support.