Our June 2021 cohorts are filling up quickly. Join our free webinar to Uplevel your career
About usWhy usInstructorsReviewsCostFAQContactBlogRegister for Webinar

C++ STL Container Fundamentals: Queue

The Standard Template Library (STL) in C++ is a powerful software library that’s a set of C++ template classes. It provides built-in algorithms, functions, iterators, and containers. This article focuses on the C++ STL container Queue.

STL containers are objects that can store multiple elements, manage any storage required for the elements, and offer member functions we can use to access them. A container may allow elements of either the same type or different types to be stored in it. Depending on this, and on whether it is unordered, the containers are divided into three types:

  • Sequence Containers: deque, arrays, vector, list, and forward_list
  • Associative Containers: set, multiset, map, and multimap
  • Unordered Associative Containers: unordered_set, unordered_multiset, unordered_map, and unordered_multimap

There are also Container Adapters: queue, priority_queue, and stack that are a subset of containers. These container adapters offer a different interface for sequential containers. 

To help you harness the power of STL and be a more efficient developer, we’re doing a series on C++ STL container fundamentals. This article focuses on the C++ STL container, Queue (check out the learn page for more).

Having trained over 11,000 software engineers, we know what it takes to crack the toughest tech interviews. Our alums consistently land offers from FAANG+ companies. The highest ever offer received by an IK alum is a whopping $1.267 Million!

At IK, you get the unique opportunity to learn from expert instructors who are hiring managers and tech leads at Google, Facebook, Apple, and other top Silicon Valley tech companies.

Want to nail your next tech interview? Sign up for our FREE Webinar.

In this article, we’ll cover:

  • C++ STL Container Fundamentals: Queue
  • Use of the C++ STL Container Queue
  • Methods of Queue
  • How to Use the C++ STL Container Queue
  • FAQs on C++ STL Container Fundamentals: Queue

C++ STL Container Fundamentals: Queue

Queue in STL refers to the data structure queue implemented as a dynamically resizing container adaptor. Queue operates in a FIFO (first-in-first-out) context — we insert elements at the back end and delete them from the front. 

A queue in STL uses an encapsulated object of deque or list as its underlying container. Hence, it has access to a set of member functions for element access.

Use of the C++ STL Container Queue

Queues are used widely for problems involving:

  • Waiting lists
  • Printer queues
  • CPU queues
  • Other single shared resource contexts
  • Shortest distance between any two vertices in unweighted undirected graphs
  • Asynchronous transfer of data like in pipes, files I/O, etc.

Methods of C++ STL queue

Here are the several methods associated with queue in STL:

  • queue::empty()
  • queue::size()
  • queue::swap()
  • queue::emplace()
  • queue::front()
  • queue::back()
  • queue::push(element)
  • queue::pop() 

Let us now see what some of the most commonly used queue methods do and how to use them in the next section via an example.

How to Use C++ STL Queue

Here, we take a look at how you can use the queue as a C++ STL container for a smoother coding experience:

Code


// C++ Queue in STL

#include 
#include 

using namespace std;

// Print the queue
void printQueue(queue < int > Q) {
  queue < int > queueToPrint = Q;
  while (!queueToPrint.empty()) {
    cout << " " << queueToPrint.front();
    queueToPrint.pop();
  }
  cout << "\n";
}

int main() {
  queue < int > intQueueExample;
  intQueueExample.push(2);
  intQueueExample.push(4);
  intQueueExample.push(6);
  intQueueExample.push(8);

  cout << "The queue intQueueExample contains:";
  printQueue(intQueueExample);

  cout << "The size of intQueueExample is: " << intQueueExample.size() << "\n";
  cout << "The front-most element of intQueueExample is: " << intQueueExample.front() << "\n";
  cout << "The back-most element of intQueueExample is: " << intQueueExample.back() << "\n";

  cout << "intQueueExample after popping an element:";
  intQueueExample.pop();
  printQueue(intQueueExample);

  return 0;
}

Output


The queue intQueueExample contains: 2 4 6 8
The size of intQueueExample is: 4
The front-most element of intQueueExample is: 2
The back-most element of intQueueExample is: 8
intQueueExample after popping an element: 4 6 8

For an article on STL priority queue and C++ priority_queue STL example, check out the C++ STL Container Fundamentals: Priority Queue article.

FAQs on C++ STL Container Fundamentals: Queue

Q1. What is a queue in C++ STL?

A queue in STL is a container adaptor that operates in a FIFO context — we insert elements at the back end and delete them from the front. It uses an encapsulated object of deque or list as its underlying container.

Q2. What functions are associated with queue in C++ STL?

Front, back, push, empty, size, swap, and emplace are some functions associated with queue in C++ STL.

Q3. What problems are queues used to solve?

Queues are used to solve problems involving waiting lists, printer queues, and CPU queues. They are also used when an asynchronous transfer of data like in pipes, files I/O, etc., is involved and in other single shared resource contexts.

Q4. Which element does pop() remove in C++ STL queue?

Given the FIFO (first-in-first-out) property of queue, the pop() function removes the element at the first position in the queue.

Q5. Where is the new element inserted when using push() in the C++ STL queue?

The new element inserted using push() is inserted at the back end of the queue.

Ready to Nail Your Next Coding Interview?

Whether you’re a coding engineer gunning for a software developer or software engineer role, a tech lead, or you’re targeting management positions at top companies, IK offers courses specifically designed for your needs to help you with your technical interview preparation!

If you’re looking for guidance and help with getting started, sign up for our FREE webinar. As pioneers in the field of technical interview preparation, we have trained thousands of software engineers to crack the most challenging coding interviews and land jobs at their dream companies, such as Google, Facebook, Apple, Netflix, Amazon, and more!

Sign up now!

Attend our Free Webinar on How to Nail Your Next Technical Interview

Recommended Posts

All Posts