Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Container Adaptors: stack, queue, priority_queue | Containers
C++ STL Containers and Algorithms

bookContainer Adaptors: stack, queue, priority_queue

Note
Definition

Container adaptors in C++ are wrappers that provide a simplified, restricted interface to existing container types.

Unlike sequence or associative containers, adaptors like std::stack, std::queue, and std::priority_queue hide iterators and limit element access. They model specific data structures, offering clear and focused operations such as push, pop, and top/front access.

  • Stacks (LIFO);
  • Queues (FIFO);
  • Priority queues (heap-based).

Adaptors achieve this by wrapping an existing container such as std::deque, std::vector, or std::list and forwarding operations while constraining access. You typically use a container adaptor when you need a strict stack, queue, or priority queue abstraction and do not require direct access to elements or iteration.

main.cpp

main.cpp

copy
1234567891011121314
#include <iostream> #include <stack> #include <queue> int main() { std::stack<int> s; s.push(10); s.push(20); std::cout << "Stack top: " << s.top() << "\n"; s.pop(); std::cout << "Stack top after pop: " << s.top() << "\n"; }

The std::priority_queue adaptor provides a way to maintain a collection of elements in heap order, so that the largest (by default) element is always accessible at the top. Internally, it uses a random-access container such as std::vector and maintains the heap invariant using algorithms like std::push_heap and std::pop_heap.

You should use std::priority_queue when you need fast access to the highest-priority element and efficient insertion and removal, but do not require iteration or random access to other elements. It is ideal for scheduling, event simulation, and any scenario involving dynamic sets where priority-based retrieval is crucial.

main.cpp

main.cpp

copy
12345678910111213141516171819202122232425
#include <iostream> #include <queue> #include <vector> #include <string> struct Task { int priority; std::string description; // Higher priority comes first bool operator<(const Task& other) const { return priority < other.priority; } }; int main() { std::priority_queue<Task> tasks; tasks.push({3, "Write report"}); tasks.push({1, "Check email"}); tasks.push({5, "Fix bug"}); while (!tasks.empty()) { std::cout << "Next task: " << tasks.top().description << " (priority " << tasks.top().priority << ")\n"; tasks.pop(); } }
question mark

Which C++ container adaptor provides a Last-In-First-Out (LIFO) data structure?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 6

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Awesome!

Completion rate improved to 6.67

bookContainer Adaptors: stack, queue, priority_queue

Sveip for å vise menyen

Note
Definition

Container adaptors in C++ are wrappers that provide a simplified, restricted interface to existing container types.

Unlike sequence or associative containers, adaptors like std::stack, std::queue, and std::priority_queue hide iterators and limit element access. They model specific data structures, offering clear and focused operations such as push, pop, and top/front access.

  • Stacks (LIFO);
  • Queues (FIFO);
  • Priority queues (heap-based).

Adaptors achieve this by wrapping an existing container such as std::deque, std::vector, or std::list and forwarding operations while constraining access. You typically use a container adaptor when you need a strict stack, queue, or priority queue abstraction and do not require direct access to elements or iteration.

main.cpp

main.cpp

copy
1234567891011121314
#include <iostream> #include <stack> #include <queue> int main() { std::stack<int> s; s.push(10); s.push(20); std::cout << "Stack top: " << s.top() << "\n"; s.pop(); std::cout << "Stack top after pop: " << s.top() << "\n"; }

The std::priority_queue adaptor provides a way to maintain a collection of elements in heap order, so that the largest (by default) element is always accessible at the top. Internally, it uses a random-access container such as std::vector and maintains the heap invariant using algorithms like std::push_heap and std::pop_heap.

You should use std::priority_queue when you need fast access to the highest-priority element and efficient insertion and removal, but do not require iteration or random access to other elements. It is ideal for scheduling, event simulation, and any scenario involving dynamic sets where priority-based retrieval is crucial.

main.cpp

main.cpp

copy
12345678910111213141516171819202122232425
#include <iostream> #include <queue> #include <vector> #include <string> struct Task { int priority; std::string description; // Higher priority comes first bool operator<(const Task& other) const { return priority < other.priority; } }; int main() { std::priority_queue<Task> tasks; tasks.push({3, "Write report"}); tasks.push({1, "Check email"}); tasks.push({5, "Fix bug"}); while (!tasks.empty()) { std::cout << "Next task: " << tasks.top().description << " (priority " << tasks.top().priority << ")\n"; tasks.pop(); } }
question mark

Which C++ container adaptor provides a Last-In-First-Out (LIFO) data structure?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 6
some-alt