Queue in STL

Definition

std::queue is a container adapter that provides a queue data structure. It is implemented as a wrapper around a deque (double-ended queue).

Syntax:

#include <queue>

std::queue<DataType> queueName;

Example Usage

#include <iostream>
#include <queue>

int main() {
    // Declaration of a queue of integers
    std::queue<int> myQueue;

    // Enqueue elements
    myQueue.push(10);
    myQueue.push(20);
    myQueue.push(30);

    // Accessing the front element
    std::cout << "Front element: " << myQueue.front() << std::endl;

    // Dequeue elements
    myQueue.pop();

    // Accessing the front element after dequeue
    std::cout << "Front element after dequeue: " << myQueue.front() << std::endl;

    // Checking if the queue is empty
    std::cout << "Is queue empty? " << (myQueue.empty() ? "Yes" : "No") << std::endl;

    return 0;
}

Functions of Queue

1 push()

Adds an element to the back of the queue.

std::queue<int> myQueue;
myQueue.push(10);
myQueue.push(20);

Time Complexity: O(1)

2 pop()

Removes the front element of the queue.

std::queue<int> myQueue;
myQueue.push(10);
myQueue.push(20);
myQueue.pop(); // Removes 10 from the queue

Time Complexity: O(1)

3 front()

Returns a reference to the front element of the queue.

std::queue<int> myQueue;
myQueue.push(10);
myQueue.push(20);
int frontElement = myQueue.front(); // frontElement is 10

Time Complexity: O(1)

4 back()

Returns a reference to the back element of the queue.

std::queue<int> myQueue;
myQueue.push(10);
myQueue.push(20);
int backElement = myQueue.back(); // backElement is 20

Time Complexity: O(1)

5 empty()

Checks if the queue is empty

std::queue<int> myQueue;
bool isEmpty = myQueue.empty(); // isEmpty is true
myQueue.push(10);
isEmpty = myQueue.empty(); // isEmpty is false

Time Complexity: O(1)

6 size()

Returns the number of elements in the queue.

std::queue<int> myQueue;
myQueue.push(10);
myQueue.push(20);
int queueSize = myQueue.size(); // queueSize is 2

Complete Example

#include <iostream>
#include <queue>

int main() {
    std::queue<int> myQueue;

    myQueue.push(10);
    myQueue.push(20);
    myQueue.push(30);

    std::cout << "Front element: " << myQueue.front() << std::endl;
    std::cout << "Back element: " << myQueue.back() << std::endl;
    std::cout << "Queue size: " << myQueue.size() << std::endl;

    myQueue.pop();

    std::cout << "Front element after pop: " << myQueue.front() << std::endl;
    std::cout << "Queue is empty? " << (myQueue.empty() ? "Yes" : "No") << std::endl;

    return 0;
}