246                      9. ,    STL

  stack_tl.cpp

//  

template <class TYPE>
class stack {
public:

explicit stack(int size = 100)

: max_len(size), top(EMPTY), s(new TYPE[size])
{ assert (s != 0;); }

-stack() { delete []s; }

void reset() { top = EMPTY; }

void push(TYPE c) { s[++top] = c; }

TYPE pop() { return s[top--]; }

TYPE top_of()const { return s[top]; }

bool empty()const { return top == EMPTY; }

bool full()const { return top == max_len - 1;}
private:

enum { EMPTY = -1 } ;

TYPE* s;

int max_len;

int top;

};

    :

template <class >

    ,    -
  .        -
   .     -
.         
  .      
;        
.    :

stack<char>     stk_ch;            //  100 char
stack<char*>    stk_str(200);      //  200 char*
stack<complex> stk_cmplx(500);    //.  500 complex

        -
,         .  -
    void*    
.            -
    < >,   .

  stack_tl.cpp

//  ,   char*
void reverse(char* str[], int n)