Containers in Practice
Deque Front Back
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
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;
}
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
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
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