#include <deque>
#include <iostream>

int main( ) {
   std::deque<int> dc;

   dc.push_back(5);     // { 5 }                      push_back agrega por la derecha
   dc.push_back(9);     // { 5, 9 }
   dc.push_front(7);    // { 7, 5, 9 }                push_front agrega por la izquierda
   dc.push_front(3);    // { 3, 7, 5, 9 };
   dc.push_front(8);    // { 8, 3, 7, 5, 9 };
   dc.pop_back( );      // { 8, 3, 7, 5 }             pop_back quita el último
   dc.pop_front( );     // { 3, 7, 5 }                pop_front quita el primero

   for (int i = 0; i < dc.size( ); ++i) {
      std::cout << dc[i] << " ";                   // se puede iterar igual que en std::vector
   }
   std::cout << "\n";
   
   std::cout << dc[0] << " " << dc[dc.size( ) - 1] << "\n";    // primero y último
   std::cout << dc.front( ) << " " << dc.back( ) << "\n";      // primero y último (equivalente a lo anterior)
}
