📖
C++
  • 1. C++ Basics
    • 1.1 Input, Output, and Program Structure
      • 1.1.1 Welcome to Data Structures in C++
      • 1.1.2 Hello World
      • 1.1.3 Input and Output
      • 1.1.4 getline and cin
      • 1.1.5 Program Structure
    • 1.2 Basic Data Types
      • 1.2.1 Basic Data Types
        • 1.2.1.1 Differences between C++ and Java Data Types and Variables
      • 1.2.2 Strings and Characters
      • 1.2.3 Numbers
      • 1.2.4 Booleans
    • 1.3 Conditional Statements
      • 1.3.1 Conditional Statements
      • 1.3.2 Basic If/Else Statements
      • 1.3.3 Comparing Strings
      • 1.3.4 Logical Operators
    • 1.4 Loops
      • 1.4.1 Loops
      • 1.4.2 For Loops
      • 1.4.3 While Loops
      • 1.4.4 Searching a String
    • 1.5 Functions in C++
      • 1.5.1 Functions in C++
      • 1.5.2 Defining and Calling Functions
      • 1.5.3 Passing by Reference vs Value
      • 1.5.4 Function Prototypes
  • 2. Going Beyond the Basics
    • 2.1 Vector Basics
      • 2.1.1 Vector Basics
      • 2.1.2 Creating and Accessing Vectors
      • 2.1.3 Inserting into a Vector
      • 2.1.4 Looping Through a Vector
    • 2.2 Function Default Values
      • 2.2.1 Function Default Values
      • 2.2.2 Default Values
      • 2.2.3 Default Values with a Prototype
      • 2.2.4 Example: Splitting a String
    • 2.3 Structs
      • 2.3.1 Structs
      • 2.3.2 Defining and Accessing Structs
      • 2.3.3 Using Structs: Line Length
    • 2.4 File Input/Output
      • 2.4.1 File Input/Output
      • 2.4.2 Reading in a File
      • 2.4.3 Processing a File
      • 2.4.4 Writing to a File
      • 2.4.5 Creating an Input Stream from a String
    • 2.5 Error Handling
      • 2.5.1 Error Handling
      • 2.5.2 Validating a Number
      • 2.5.3 Validating a Vector Index
      • 2.5.4 Throwing Other Values
  • 3. Libraries
    • 3.1 Header Files
      • 3.1.1 Header Files
      • 3.1.2 Header File
      • 3.1.3 Header and Implementation File
      • 3.1.4 Safer Header
    • 3.2 Using Libraries
      • 3.2.1 Using a Utilities Library
      • 3.2.2 The Util Library
  • 4. 2D Vectors, Stacks, and Queues
    • 4.1 2D Vectors
      • 4.1.1 2D Vectors
      • 4.1.2 The 2D Vector
      • 4.1.3 Creating a 2D Vector
    • 4.3 Stacks
      • 4.3.1 Stacks
      • 4.3.2 Basic Stack
      • 4.3.3 Stack Example: Reverse a String
    • 4.5 Queues
      • 4.5.1 Queues
      • 4.5.2 Basic Queues
      • 4.5.3 Queue Example: Next in Line
  • 5. Sets and Maps
    • 5.1 Pairs and Iterators
      • 5.1.1 Pairs and Iterators
      • 5.1.2 Pairs
      • 5.1.3 Iterators
    • 5.3 Sets
      • 5.3.1 Sets
      • 5.3.2 Basic Sets
      • 5.3.3 Iterating Through a Set
      • 5.3.4 Sets of Struct Values
    • 5.4 Maps
      • 5.4.1 Maps
      • 5.4.2 Map Basics
      • 5.4.3 Iterating Through a Map
      • 5.4.4 Updating Maps
  • 6. Recursion
    • 6.1 Functional Recursion
      • 6.1.1 Functional Recursion
      • 6.1.2 Basic Recursive Problem: Exponential
      • 6.1.3 Recursion Example: Reverse String
      • 6.1.4 Recursion Example: Make Sum
    • 6.2 Procedural Recursion
      • 6.2.1 Procedural Recursion
      • 6.2.2 Print Binary
      • 6.2.3 Print Permutations
      • 6.2.4 Depth vs Breadth Search
  • 7. Pointers, Linked Lists, and Graphs
    • 7.1 Pointers
      • 7.1.1 Pointers
      • 7.1.2 Assigning and Updating Pointers
      • 7.1.3 Pointers and Functions
      • 7.1.4 Pointers and Data Structures
    • 7.2 Linked Lists
      • 7.2.1 Linked Lists
      • 7.2.2 Basic Linked List
      • 7.2.3 Linked List and Recursion
      • 7.2.4 Example: Sorted Phone Book
      • 7.2.5 Doubly Linked List
    • 7.3 Graphs
      • 7.3.1 Graphs
      • 7.3.2 Basic Example: Breadth First Search
      • 7.3.3 Application: Connecting Cities
Powered by GitBook
On this page
  • Queues
  • Creating a Queue
  • Basic Queue Operations
  • Iterating through a Queue
  • Try This Example
  1. 4. 2D Vectors, Stacks, and Queues
  2. 4.5 Queues

4.5.2 Basic Queues

Queues

A queue is an advanced data structure in C++. It is part of the standard library but does need to be included to use it.

#include <queue>

A queue stores a list of values like a vector or stack, however unlike vectors, you only have limited access to the items in the list. Think of a queue as a line that you may stand in. Anyone who joins the line joins at the back. The next person in line is then taken from the front. A queue in C++ does just this. You add new items to the back and take items off the front. This makes queues first-in, first-out.

Creating a Queue

Queues can be declared as an empty queue with a variable type, similar to how a new vector or stack is declared. Once declared, they are empty but ready to be added to.

queue<double> doubleQueue; // creates a new double queue
queue<string> strQueue; // creates a new string queue

Lick stacks, queues can also be declared and initialized with an existing data structure such as a vector.

vector<int> numVector {1,2,3,4};
queue<int> numQueue (numVector);

Basic Queue Operations

As mentioned above, queues store values but only give you limited access to items. Typically, you only access the front of the queue, but in C++, you can also access the back of the queue (although you can only remove the front).

Here is a list of commands available with queues.

Function
Operation

push

Inserts new element at the back of the queue.

front

Accesses the element at the front of the queue, but does not remove it.

pop

Removes the element at the front of the queue, but does not return it.

back

Accesses the element at the back of the queue, but does not remove it.

size

Returns the number of items in the queue.

empty

Returns a bool as true if the queue is empty.

Similar to stacks, you should notice that the front and pop commands are both needed to access and remove an element from the queue. Front will return the value and then you use pop to remove it.

Unlike stacks, queues do give you access to the last item in the list using the back command, however there is no way to remove that item.

Just like stacks, you will notice that there is a size and an empty function. While it is possible to use size == 0, this can be streamlined with the empty function.

Iterating through a Queue

As was the case with stacks, queues are not a data structure to use if you want to iterate through the entire list. Values in a queue cannot be accessed via an index value and you do not have access to any value in the middle of the queue.

Previous4.5.1 QueuesNext4.5.3 Queue Example: Next in Line

Last updated 3 years ago

Try This Example