栈后进先出。
#include<iostream>
#include<stack>
using namespace std;
class teacher
{
public :
int age;
char name[32];
void printf()
{
cout<<age<<endl;
}
};
void int_stack()
{
stack <int> s;//栈声明
for (int i=0;i<10;i++)
{
s.push(i); //push(元素)
}
cout<<s.size()<<endl;
while(!s.empty())
{ int tmp;
tmp=s.top();//获取栈顶元素
cout<<tmp<<" ";
s.pop(); //删除栈顶元素
}
cout<<endl;
}
void teacher_stack()
{
teacher t1,t2,t3;
t1.age=31;
t2.age=19;
t3.age=45;
stack <teacher> s;
s.push(t1);
s.push(t2);
s.push(t3);
while(!s.empty())
{
teacher tmp;
tmp=s.top();//获取栈顶元素
tmp.printf();
s.pop();//出栈
}
}
void teacher_stack2()
{
teacher t1,t2,t3;
t1.age=31;
t2.age=19;
t3.age=45;
stack <teacher*> s;
s.push(&t1);
s.push(&t2);
s.push(&t3);
while(!s.empty())
{
teacher* tmp;
tmp=s.top();//获取栈顶元素
tmp->printf();//是指针用->访问
s.pop();//出栈
}
}
int main()
{
int_stack();
teacher_stack();
teacher_stack2();
return 0;
}