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;
}