A deque can add items at both ends, which makes it useful for small queues and buffers.

deque A `std::deque` supports efficient insertion and removal at the front and back.
front `front` reads the value at the beginning without removing it.

Deque Front Back

firstJob
deque_front_back.cpp
Replay: real traced execution (multi-file project)
#include <deque>
#include <iostream>

int main() {
    int firstJob = 10;

    std::deque<int> jobs;
    jobs.push_back(30);
    jobs.push_front(firstJob);

    int front = jobs.front();
    int back = jobs.back();

    std::cout << "front=" << front << std::endl;
    std::cout << "back=" << back << std::endl;
    return 0;
}
#include <deque>
#include <iostream>

int main() {
    int firstJob = 5;

    std::deque<int> jobs;
    jobs.push_back(30);
    jobs.push_front(firstJob);

    int front = jobs.front();
    int back = jobs.back();

    std::cout << "front=" << front << std::endl;
    std::cout << "back=" << back << std::endl;
    return 0;
}
#include <deque>
#include <iostream>

int main() {
    int firstJob = 20;

    std::deque<int> jobs;
    jobs.push_back(30);
    jobs.push_front(firstJob);

    int front = jobs.front();
    int back = jobs.back();

    std::cout << "front=" << front << std::endl;
    std::cout << "back=" << back << std::endl;
    return 0;
}
  1. firstJob ← 10, jobs ← (empty), front ← 10, back ← 30

    4int main() {5    int firstJob→ 10 = 10; //@firstJob=5, 2067    std::deque<int> jobs→ (empty);8    jobs(empty).push_back(30);9    jobs(empty).push_front(firstJob10);1011    int front→ 10 = jobs(empty).front();12    int back→ 30 = jobs(empty).back();1314    std::cout << "front=" << front10 << std::endl;15    std::cout << "back=" << back30 << std::endl;16    return 0;17}
    outputfront=10
    back=30
  1. firstJob ← 5, jobs ← (empty), front ← 5, back ← 30

    4int main() {5    int firstJob→ 5 = 5;67    std::deque<int> jobs→ (empty);8    jobs(empty).push_back(30);9    jobs(empty).push_front(firstJob5);1011    int front→ 5 = jobs(empty).front();12    int back→ 30 = jobs(empty).back();1314    std::cout << "front=" << front5 << std::endl;15    std::cout << "back=" << back30 << std::endl;16    return 0;17}
    outputfront=5
    back=30
  1. firstJob ← 20, jobs ← (empty), front ← 20, back ← 30

    4int main() {5    int firstJob→ 20 = 20;67    std::deque<int> jobs→ (empty);8    jobs(empty).push_back(30);9    jobs(empty).push_front(firstJob20);1011    int front→ 20 = jobs(empty).front();12    int back→ 30 = jobs(empty).back();1314    std::cout << "front=" << front20 << std::endl;15    std::cout << "back=" << back30 << std::endl;16    return 0;17}
    outputfront=20
    back=30