#include <iostream> #include <cstdlib> using namespace std; //programaciòn Genèrica 2da. parte //Contenedpres template <class T> class pila { T*arreglo; // esta lìnea hace a la clase pila contenedor int tam; public: //nombre de una funcion que inicializa los valores de una estructura     pila(){         arreglo =new T[1000];     tam=0;     } // se llama igual que la clase y puede o no puede llevar parametros void agregar (T dato){     if (tam <1000) arreglo [tam++]=dato;     else         cout << "Pila llena no existe lugar para el dato "<< endl;   }   void quitar (){   if (tam>0) tam --; else     cout << "Pila vacia ya no tiene datos " << endl;   } T tope (){  if (tam >0) return arreglo [tam-1];  else cout << "No  hay  datos en Pila " << endl ;  }  int  elementos (){     return tam;  }  bool vacia () {  return tam==0;  }  friend ostream&operator<<(ostream&sale,pila<T>&p){  for (int i = p.tam-1;i>=0;i--)     sale<<"["<< p.arreglo [i]<<"]"<< endl;  } }; int main (){ pila < string > ppal; string pal; do {     cout << "dame palabra[.]=salir:";     cin >> pal ;     if (pal == "." )break;     ppal.agregar (pal); } while (true); cout << endl << endl<< "**PILA de PALABRAS**"      << endl << endl<< ppal;      ppal.quitar (); cout << endl << endl<< "**PILA de PALABRAS**" << endl << endl<< ppal; return EXIT_SUCCESS; }