![](https://i-blog.csdnimg.cn/blog_migrate/d728d44ccfbc7624e5e89d1e350873ea.png)
#include <iostream>
using namespace std;
template <typename S>
class Myvector{
private:
S *data;
int top;
int max;
public:
Myvector(int size,S dt):top(0),max(size){
data = new S[size];
for(int i=0;i<size;i++){
push(dt);
}
}
Myvector(const Myvector &other):data(new S (*other.data)),top(other.top),max(other.max){
}
~Myvector(){
delete []data;
cout<<"stack::析构函数:"<<this<<endl;
}
int empty(){
return top;
}
int full(){
return top==max;
}
S statop(){
return data[top];
}
S pop(){
if(empty()!=1){
S a=data[top];
top--;
return a;
}
return -1;
}
void push(S a){
if(full()==1){
S *temp = new S[top*2];
max=top*2;
for(int i=0;i<top;i++){
temp[i]=data[i];
}
delete[] data;
data=temp;
}
top++;
data[top]=a;
}
int size(){
cout<<"size:"<<top<<endl;
return top;
}
int clean(){
top=0;
return 0;
}
S FI(){
return data[0];
}
};
int main()
{
Myvector<int> s(2,1);
s.push(4);
s.push(5);
s.push(8);
cout<<s.pop()<<endl;
cout<<s.pop()<<endl;
cout<<"next"<<endl;
Myvector<char> a(1,'c');
a.push('a');
a.push('b');
cout<<a.pop()<<endl;
cout<<a.pop()<<endl;
cout<<a.pop()<<endl;
return 0;
}