C++基础类模板问题

常用模板类设计
1
【简答题】

#include <iostream>
using namespace std;
template <class T>
class Stack{
       T *v;      // 栈底
       T *p;      // 栈顶
       int   sz;      // 栈的大小
public:
       Stack(int s){ v=p=new T[sz=s];}
       ~Stack() { delete[ ] v;}       
       void push(T a) { *p++ = a;};
       T pop() { return * -- p ;} 
       int size() const  { return  p-v; }
};
int main()
{       int i,t;
         char  x;
        Stack<char>  sch(20);
        Stack<int>     sint(10);
for (i= 0; i< 10 ; i++){
    sint.push(i+1);
}

for(i=0;i<20;i++) {
    sch.push('*');
}

// …

for (i= 10; i>0 ; i--){
    if((t=sint.pop())!=i) { cout<<"error"; } else cout<<t;
}

for(i=0;i<20;i++) {
    if((x=sch.pop())!='*') { cout<<"error";} else cout<<x;
}
return 0;
}

上述代码是“栈”模板类的基础示例,请大家为该模板类增加void deleteAt(int i)函数(在类体外部实现),该函数功能是删除栈中存放的第i 个元素(从栈底开始数,i 如果越界则提示i 越界,直接返回).并在main函数中测试该函数功能。