#include <iostream>
#include <limits>
using namespace std;

#include "Pila.h"

Pila::Pila()
   : datos{vector<int>(1)},
     talla{0} {

}

void Pila::apilar(int dato) {

   if (talla == datos.size())
      datos.resize(talla * 2);
      
   datos[talla++] = dato;

}

void Pila::desapilar() {

   if (talla == 0)
      throw string("Intentando desapilar en una pila vacia");

   talla--;
   
}

int Pila::consultarCima() const {

   if (talla == 0)
      throw string("Intentando consultar cima de una pila vacia");

   return datos[talla - 1];
   
}

bool Pila::estaVacia() const {

   return talla == 0;
   
}

void Pila::mostrar() const {

   cout << "[ ";
   for (int dato : datos)
      cout << dato << " ";
   cout << "] talla = " << talla << " capacidad = " << datos.size() << endl;

}